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

时间:2015-01-06 00:07:45

标签: linux bash shell sed sh

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

key1 value1
key2 value2
key3 value3

我只想删除value3

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

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

5 个答案:

答案 0 :(得分:2)

试试这个:

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

答案 1 :(得分:2)

如果您想仅删除最后一行的最后一个单词,则可以使用:

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

如果您要删除key3的行中的最后一个字:

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

答案 2 :(得分:2)

以下是删除最后一个字段的awk

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

答案 3 :(得分:1)

删除行的最后一个单词

因为您要定位行key3 value3

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

其中\ S表示不是空格或空格的数字。

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

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

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

答案 4 :(得分:0)

这可能适合你(GNU sed):

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

这将从最后一行中删除最后一个非空格标记(保留任何周围的空格)。

要删除周围的空白区域,请使用:

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