使用带打印和不带打印的 MR 时 AWK 的差异
Difference in AWK when using NR with and withou print
我是AWK初学者,玩弄了内置变量NR后,我不明白以下内容
文字:
CREDITS,EXPDATE,USER,GROUPS
99,01 jun 2018,sylvain,team:::admin
52,01 dec 2018,sonia,team
52,01 dec 2018,sonia,team
使用
awk 'NR' file
CREDITS,EXPDATE,USER,GROUPS
99,01 jun 2018,sylvain,team:::admin
52,01 dec 2018,sonia,team
52,01 dec 2018,sonia,team
awk '{print NR}' file
1
2
3
4
因此,我期望在使用 NR>2&&NR<5 时得到相同的结果。这是我得到的:
awk 'NR>2&&NR<5' file
52,01 dec 2018,sonia,team
52,01 dec 2018,sonia,team
awk '{print NR>2&&NR<5}' file
Nothing shows up
你能告诉我为什么最后一行没有像使用 awk '{print NR}' 文件时显示的那样显示从数字到 3 到 4 的计数吗?无法将一系列 NR 与命令 print 混合使用?
提前致谢!
awk 'NR>2&&NR<5' Input_file
是我们检查条件的地方,如果行号大于 2 且大于 5,则执行打印当前行的默认操作。
在您的代码 awk '{print NR>2&&NR<5}' Input_file
中,您使用的是打印,然后提到条件,这不是 awk 的工作方式。
awk 适用于以下方法:
Condition_check/regexp{action}
如果没有给出任何操作,那么默认情况下将打印当前行,这在您的第一个代码中发生。
更多分析:
为了证明点 {print NR>2&&NR<5}
不会像 regexp/condition_check{action}
运行 的 awk
的默认方法这样:
awk '{print (NR>2&&NR<5)}' Input_file
查看输出结果:
0
0
1
1
0
0
0
0
0
0
见第 3 行和第 4 行,1
表示该行的条件为真,0
表示该行的条件为假。因此,如果我们像上面提到的那样在 (..)
中使用条件,我们可以看到它在 print
语句中打印条件的状态。
我是AWK初学者,玩弄了内置变量NR后,我不明白以下内容 文字:
CREDITS,EXPDATE,USER,GROUPS
99,01 jun 2018,sylvain,team:::admin
52,01 dec 2018,sonia,team
52,01 dec 2018,sonia,team
使用
awk 'NR' file
CREDITS,EXPDATE,USER,GROUPS
99,01 jun 2018,sylvain,team:::admin
52,01 dec 2018,sonia,team
52,01 dec 2018,sonia,team
awk '{print NR}' file
1
2
3
4
因此,我期望在使用 NR>2&&NR<5 时得到相同的结果。这是我得到的:
awk 'NR>2&&NR<5' file
52,01 dec 2018,sonia,team
52,01 dec 2018,sonia,team
awk '{print NR>2&&NR<5}' file
Nothing shows up
你能告诉我为什么最后一行没有像使用 awk '{print NR}' 文件时显示的那样显示从数字到 3 到 4 的计数吗?无法将一系列 NR 与命令 print 混合使用?
提前致谢!
awk 'NR>2&&NR<5' Input_file
是我们检查条件的地方,如果行号大于 2 且大于 5,则执行打印当前行的默认操作。
在您的代码 awk '{print NR>2&&NR<5}' Input_file
中,您使用的是打印,然后提到条件,这不是 awk 的工作方式。
awk 适用于以下方法:
Condition_check/regexp{action}
如果没有给出任何操作,那么默认情况下将打印当前行,这在您的第一个代码中发生。
更多分析:
为了证明点 {print NR>2&&NR<5}
不会像 regexp/condition_check{action}
运行 的 awk
的默认方法这样:
awk '{print (NR>2&&NR<5)}' Input_file
查看输出结果:
0
0
1
1
0
0
0
0
0
0
见第 3 行和第 4 行,1
表示该行的条件为真,0
表示该行的条件为假。因此,如果我们像上面提到的那样在 (..)
中使用条件,我们可以看到它在 print
语句中打印条件的状态。