有可能吗?
我想知道该怎么做:
NF
,否则为$0
。输入
cellular biol immunogenet, rosario
escuela estadist, medellin
medellin
预期输出
rosario
escuela estadist, medellin
medellin
答案 0 :(得分:2)
您可以使用此awk命令
awk -F, '{if (split($1, a, " ") > 2) print $NF; else print}' file
这将输出
rosario
escuela estadist, medellin
medellin
如果你想在$NF
之前删除空格,请使用此awk命令
awk -F, '{if (split($1, a, " ") > 2) print substr($NF, 2); else print}' file
这将输出
rosario
escuela estadist, medellin
medellin
<强>解释强>
我们使用-F,
将字段分隔符设置为逗号。
对于每一行,我们将第一个字段拆分为数组a
,使用单个空格作为分隔符。我们检查返回值是否大于2(split函数返回元素数),然后打印substr($NF, 2)
,删除$NF
开头的空格。否则,我们只使用print
打印整行。
答案 1 :(得分:1)
awk -F, 'split($1,a,/ /) > 2 {$0=$NF} 1' input.txt
split($1,a,/ /)
在正则表达式$1
上拆分/ /
并将其存储到数组a
中。它返回数组的结果长度。
因此,如果将$1
拆分为两个以上的字词,请将行$0
更改为$NF
。
单独1
是一种速记,可确保打印每一行。