我们可以使用 sed 命令打印 linux 中每行的最后一个单词吗?

Raj*_*ala 10 sed awk text-processing

假设,如果有一个由以下几行组成的文件,如果它们是

12345 567 7878 66

   er3 t45t y6y46y 


 4y6 y656y y5y

   46y6 65y7 y66uyuy

 yy46y6y

输出必须如下所示:

66

y6y46y

y5y

y66uyuyy

y46y6y

我已经尝试了命令sed 's/.* //g'文件名和其他几个sed命令,但它不起作用。

我可以知道确切的sed命令是什么吗?

Sté*_*las 8

awk '{print $NF}'
sed 's/[[:blank:]]*$//;s/.*[[:blank:]]//'
Run Code Online (Sandbox Code Playgroud)

这仍然会为每个空行打印一个空行。为了避免它:

awk 'NF{print $NF}'
sed 's/[[:blank:]]*$//;s/.*[[:blank:]]//;/./!d'
Run Code Online (Sandbox Code Playgroud)


jas*_*yan 7

awk变量$NF每条记录的最后一个字段; 您可以使用它仅打印文件的最后一个字段,如下所示:

awk '{print $NF}' file
Run Code Online (Sandbox Code Playgroud)


Uri*_*iel 5

你可以试试 :

  • sed 's/.* //'
  • awk '{print $NF}'


Con*_*one 5

你快到了。只需指定最后一个单词:

sed 's/^.* \([^ ][^ ]*\)/\1/g'
Run Code Online (Sandbox Code Playgroud)

它能做什么:

  1. '^.*' 删除行开头的所有内容以及任何空格。
  2. '\(...)\' 匹配一个模式并将其返回为 \1。
  3. '[^ ]' 匹配任何不带空格的内容。

(编辑以添加更好的解决方案。谢谢 Hildred!)