美好的一天,
当我尝试使用awk 'BEGIN { FS = "," } ; NF > 1 {print $(NF-1)}'
时,我想知道如何让awk正确打印输入文件的结构。
预期输出
bogota
bogota
bogota
bogota
bogota
whitehouse stn
通过提议的尝试,我获得:
bogota
bogota
bogota
bogota
bogota
whitehouse stn
而且,如果我不使用NF > 1
,我会收到此帖子标题中提到的错误。
提前感谢任何线索
答案 0 :(得分:3)
如果我理解您的需求,您需要:
awk -F, '{print $(NF?NF-1:0)}'
如果有两个或多个字段,则会打印倒数第二个字段,否则打印整行。
说明:
括号内的表达式是标准?:
三元运算符,其形式为condition ? value_if_true : value_if_false
。在awk中,如果数值不是0,则数值(如NF
)为真。
同样重要的是要知道在awk中,$
是一个采用数字参数的一元运算符。如果$(i)
,则ith
是0 < i ≤ NF
字段;整个行i == 0
;如果i > NF
,则为空字符串。 i
的其他值是非法的。
答案 1 :(得分:2)
awk -F, '{print $(NF>1?NF-1:"")}' file