删除 shell 中一行的最后一个单词

Delete the last word of a line in shell

我正在寻找如何删除 shell 中一行的最后一个字! 我使用 sed 但我只找到了如何删除每一行的最后一个词的方法,而不是指定行。 例如:我有一个文件 test.db

key1 value1
key2 value2
key3 value3

我只想删除 value3

sed -i s/'\w*

这一行只是删除每行的最后一个字!

// test.db

这一行只是删除每行的最后一个字!

试试这个:

sed -i '1{s/[^ ]\+\s*$//}' file test.db

如果你只想删除最后一行的最后一个字,那么你可以使用:

sed -i '$s/\w*$//' test.db

如果要删除 key3 行的最后一个词:

sed -i '/key3/s/\w*$//' test.db

正在删除你的行的最后一个字

因为您定位的是行 key3 value3

  sed -i '/key3 value3/s/\S*$//' test.db

其中 \S 表示不是 space 或白色 space 的数字。

删除特定行的最后一个词(一般规则)

   sed -i '/line pattern/s/\S*$//' test.db

线条图案表示在您要定位的线上找到的图案

这可能适合您 (GNU sed):

sed -r '$s/(\s*)\S+(\s*)$//' file

这会从最后一行中删除最后一个非 space 标记(保留周围的任何白色 space)。

要删除周围的白色 space 以及使用:

sed -r '$s/\s*\S+\s*$//' file

这里是 awk 删除最后一个字段:

echo "one two three" | awk '{$NF="";sub(/[ \t]+$/,"")}1'
one two