我需要删除一行这样的行:
[success] Total ....
我尝试了以下sed命令,但没有用
sed '/\[/d' filename > newFile
但是当我使用新文件时,该行仍然存在!摆脱它的正确命令是什么
答案 0 :(得分:2)
如果您希望删除以图案开头的行,则应在图案开头使用锚点符号(^
):
sed -E '/^\[/d' filename > newFile
要在模式的开头容纳由于缩进而常见的空格,您应该
sed -E '/^[[:blank:]]+\[/d' filename > newFile
GNU sed
具有通过-i
选项实现的就地编辑选项,因此上述内容可以替换为
sed -Ei '/^[[:blank:]]+\[/d' filename
似乎sed
有no limits涉及文件大小,但是对于大文件来说通常很慢。
答案 1 :(得分:0)
要删除以[开头的行,我们可以使用此sed模式
$ sed -E '/^\s*\[/d' filename
对具有以下内容的文件data3.txt说:
$ cat data3.txt
dont remove this line
[success] faile ... remove this line
[hola to be removed
[hola] remove this
[hola] remove this
[] remove thisline
this [success] Total dont remove this
您可以运行此命令,该命令在开始时要留有空格/制表符/空格等,后跟[和其他文本数据:
$ sed '/^\s*\[/d' data3.txt
dont remove this line
this [success] Total dont remove this
这里
'/^\s*\[/d' : takes care of [ preceded by zero or more occurrences of space/tab etc.
答案 2 :(得分:0)
使用grep
:
grep -v '^[[]' file
为了匹配[
,我通常将其放入字符类:
[] # empty character class
[[] # character class with [ as the only item
顺便说一句:如果在行的开头允许有可选的空格:
grep -v '^[[:blank:]]*[[]' file