删除bash中每行的最后一个字

问题描述:

我正在尝试通过一个文件,并删除每行中的最后一个字。目前,我正在使用命令删除bash中每行的最后一个字

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

但是它出来了,old.txt和new.txt是一样的。感谢您的帮助,如果我能澄清这个问题,请告诉我。另外,为了定义'单词'我只是使用空格。

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

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

是old.txt是走出来的new.txt的原因可能是因为你的正则表达式^*\n不匹配old.txt任何行。

+1

+1,'g'是不必要的,因为正则表达式每行只能匹配一次。 – 2012-04-18 23:20:08

+0

编辑删除在最后的克(习惯的力量)。对于那些不知道的,/ g允许每行有多个匹配。 – 2012-04-18 23:21:49

+0

感谢您的帮助!这比我想象的要简单。 – 2012-04-18 23:29:46

以下是内联编辑。在运行之前,请备份您的文件。

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

如果您在OS X上工作,你可能想尝试以下

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

如果你不感兴趣,直接写入回原来的文件,但希望输出为打印。

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