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

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

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

12345 567 7878 66

   er3 t45t y6y46y


 4y6 y656y y5y

   46y6 65y7 y66uyuy

 yy46y6y

输出必须类似于:

66

y6y46y

y5y

y66uyuyy

y46y6y

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

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

答案1

你可以试试 :

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

如果您的文件中有以空格结尾的行,您可以预先使用 删除所述尾随空格sed 's/ +$//'。这两个动作可以组合在一行中:

  • sed -e 's/ +$//' -e 's/.* //'

答案2

awk '{print $NF}'
sed 's/[[:blank:]]*$//;s/.*[[:blank:]]//'

awk这仍然会为每个空行打印一个空行(带有as运算符的整行将$应用于 0,这将产生完整的记录)。为了避免它:

awk 'NF{print $NF}'
sed 's/[[:blank:]]*$//;s/.*[[:blank:]]//;/./!d'

答案3

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

awk '{print $NF}' file

答案4

您可以使用一些适当的模式来grep代替sed,例如:

grep -o "[a-Z0-9]*$"

在此示例中,[...]包含被认为适合“单词”的字符范围(在本例中为字母数字,可以添加其他符号,其中一些符号必须被转义)。

相关内容