$NF
如果我们不知道最后一列的编号,则可以使用文件来打印每行的最后一列。
但是我面临的困难是最后一列具有空值。
例如,解析who
命令
$ who
root tty1 2018-01-25 09:36
root pts/0 2018-05-30 07:39 (192.168.1.134)
root pts/1 2018-05-28 23:12 (192.168.1.134)
root pts/2 2018-06-01 10:01 (192.168.1.188)
得到结果:
$ who | awk '{print $NF}'
09:36
(192.168.1.134)
(192.168.1.134)
(192.168.1.188)
预期结果
(192.168.1.134) (192.168.1.134) (192.168.1.188)
让我知道单线取得预期结果的可能性。
编辑1:上面的情况只是一个示例。我不喜欢更改定界符以实现结果。
编辑2:字段少于最大字段的行没有任何内容(输出的空行)
要仅输出具有最大列数的行的最后一列,可以执行以下操作:
who | awk '
NF > max {max = NF; output = ""}
NF == max {output = output $NF ORS}
END {printf "%s", output}'
要为输入的每一行输出一行,但为没有最大列数的行输出为空,请执行以下操作:
who | awk '
NF > max {max = NF}
{n[NR] = NF}
NF == max {last[NR] = $NF}
END {for (i = 1; i <= NR; i++) print n[i] == max ? last[i] : ""}'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句