删除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任何行。
答
以下是内联编辑。在运行之前,请备份您的文件。
sed -i 's/[[:alnum:]]*$//' /yourfile
如果您在OS X上工作,你可能想尝试以下
sed -i '' 's/[[:alnum:]]*$//' /yourfile
如果你不感兴趣,直接写入回原来的文件,但希望输出为打印。
sed 's/[[:alnum:]]*$//' /yourfile
+1,'g'是不必要的,因为正则表达式每行只能匹配一次。 – 2012-04-18 23:20:08
编辑删除在最后的克(习惯的力量)。对于那些不知道的,/ g允许每行有多个匹配。 – 2012-04-18 23:21:49
感谢您的帮助!这比我想象的要简单。 – 2012-04-18 23:29:46