如果我们不知道最后一个列号,我们可以使用$NF打印文件中每行的最后一列.
但是我面临的困难是最后一列有空值.
例如,解析谁命令
$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] : ""}'
标签:linux,awk,shell-script
来源: https://codeday.me/bug/20190816/1663233.html