删除bash中每行的最后一个单词

时间:2012-04-18 23:13:35

标签: regex bash sed

我正在尝试浏览文件,并删除每行中的最后一个单词。目前,我正在使用命令

sed 's/^*\n//' old.txt > new.txt

但是现在看来old.txt与new.txt相同。感谢您的帮助,如果我能澄清这个问题,请告诉我。另外,为了定义'word',我只是使用空格。

2 个答案:

答案 0 :(得分:11)

尝试以下方法。 \w*匹配文件中的最后一个单词,$将搜索锚定到该行的末尾。

sed s/'\w*$'// old.txt > new.txt

old.txt作为new.txt发布的原因很可能是因为你的正则表达式^*\n与old.txt中的任何行都不匹配。

答案 1 :(得分:1)

以下是内联编辑。在跑步之前,请备份你的文件。

sed -i 's/[[:alnum:]]*$//' /yourfile

如果您正在使用OS X,则可能需要尝试以下

sed -i '' 's/[[:alnum:]]*$//' /yourfile

如果您对直接写回原始文件不感兴趣,但希望打印输出。

sed 's/[[:alnum:]]*$//' /yourfile