0

这个 awk 命令将对每一行执行“stuff 1”,仅对第一行执行“stuff 2”,对除第一行以外的行执行“stuff 3”。

awk '{ { Do stuff 1 } if(NR==1) { Do stuff 2 } else { Do stuff 3 } }'

基于上述内容,下面将为每一行执行“stuff 1”,当该行不是第一行时为“stuff 2”,为每一行(包括第一行)正确执行“stuff 3”??

awk '{ Do stuff 1 } NR!=1 { Do stuff 2 } { Do stuff 3 }'

还是只对 NR!=1 的行执行“stuff 2”和“stuff 3”?

4

2 回答 2

1

在 5 行输入上:

ls -1 | awk '{ print "allways"; } NR!=1 { print NR"-"2; } { print NR"-"3 }'
allways
1-3
allways
2-2
2-3
allways
3-2
3-3
allways
4-2
4-3
allways
5-2
5-3

所以,stuff3 总是完成(就像 stuff1 一样)。只有 stuff2 受条件影响。

于 2012-04-27T07:47:35.237 回答
1

注意第一个中的外大括号;您有一个在所有行上执行的块,其中包含一个在所有行上执行的块和一个基于NR.

第二个有三个块,其中第二个有一个条件,它只在第 2 行及以后执行。

于 2012-04-27T07:47:57.287 回答