我在文件中有多行。一些行以下面的模式开始
0 8234 <Enter_newLine>
0 12 <Enter_newLine>
1 2 <Enter_newLine>
我想删除以0开头的行,如上所示。有人可以帮助我吗
答案 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
的行。