我需要从文本文件中删除特定模式。
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