删除与文件中的字符串匹配的行

时间:2015-03-25 18:05:35

标签: bash grep vi substitution

我在文件中有多行。一些行以下面的模式开始

0 8234 <Enter_newLine>
0 12 <Enter_newLine>
1 2  <Enter_newLine>

我想删除以0开头的行,如上所示。有人可以帮助我吗

4 个答案:

答案 0 :(得分:3)

在awk中这很简单:

awk '!/^0/' file

任何以0开头的行都不会被打印。

要覆盖输入文件,您可以使用标准技巧:

awk '!/^0/' file > tmp && mv tmp file

你也可以使用grep:

grep -v '^0' file

-v开关意味着只打印与图案不匹配的行。

答案 1 :(得分:3)

如果您想编辑该文件,可以使用标准编辑器ed

ed -s file < <(printf '%s\n' g/^0/d w q)

这使用g/re/d构造:g来使用整个文件,/re/是要使用的正则表达式,此处^0匹配以{{1}开头的行}和0删除这些行。然后我们发送命令d(写)和w(退出)。

同样没有基本原理:

q

答案 2 :(得分:2)

您还可以尝试sed

sed -i '/^0[[:blank:]]\+/d' file.txt

假设在初始0之后可以有一个或多个空格或制表符,则没有其他字符。

答案 3 :(得分:0)

awk应该:

awk '$1!="0"' file
1 2  <Enter_newLine>

这将删除第一个字段仅为0的行。