AWK编程,条件语句

时间:2012-04-27 07:40:03

标签: linux bash awk

这个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 ??

的行执行“填充2”和“填充3”

2 个答案:

答案 0 :(得分: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受条件影响。

答案 1 :(得分:1)

注意第一个的外括号;你有一个在所有行上执行的块,包含一个在所有行上执行的块和一个根据NR决定的条件。

第二个有三个块,第二个有一个条件,它只对第2行和第2行执行。