删除文本文件中的特定模式

删除文本文件中的特定模式

我需要从文本文件中删除特定模式。

check this (2005)
right now (2003)

我尝试使用 sed 来实现此目的,但是收到错误。

sed 's/\s(.*)//d' file.txt

我想从文件中删除以下模式:

 (2005)
 (2003)

括号前的一个空格字符也需要删除。

答案1

你可以这样做:

sed 's| (....)||g' file.txt

这将删除括号内任意字符的四次出现,每个.字符代表一个字符。它还删除了括号之前的空格。

如果括号之间有多个字符,则可以使用 glob:

sed 's| (.*)||g' file.txt

一旦您确认它可以满足您的要求,请添加i以就地编辑文件。

sed -i 's| (....)||g' file.txt

sed -i 's| (.*)||g' file.txt

答案2

替代命令s没有d标志。

不过有一个d(删除)命令:

sed '/ (.*)$/d' file.txt

这将从输入中删除行尾包含括号字符串的所有行,前面有一个空格(这不是您想要做的)。

相反,删除标志并进行普通替换:

sed 's/ (.*)$//' file.txt

要将删除限制为仅包含四位数字的括号:

sed 's/ ([0-9]\{4\})$//' file.txt

相关内容