如果 $4 是一,我想从文本文件中删除这些行
123 34 A 0
23 45 A 1
36 5 A 36
176 3 A 1
期望的输出
123 34 A 0
36 5 A 36
我需要就地编辑。如何使用 awk 或 sed 执行此操作?
在awk
:
awk '$4 != 1'
它是可行的sed
,但要困难得多,我不会打扰:
sed '/^[^ ][^ ]* *[^ ][^ ]* *[^ ][^ ]* *1 *$/d'
或者,如果你有 GNU sed
:
sed -r '/^[^ ]+ +[^ ]+ +[^ ]+ +1 *$/d'
使用GNU sed
with-i
进行就地编辑和-r
扩展正则表达式的一种方法:
sed -ri '/^\S+\s+\S+\s+\S+\s+1( |$)/d' file
如果您迫切需要就地编辑,您可能还想尝试perl
使用它的自动拆分功能。该代码也更具可读性和可移植性:
perl -i -ane 'print if $F[3] != 1' file
结果:
123 34 A 0
36 5 A 36
只是为了与众不同...
$ ed << \eof
g- 1$-d
w
q
eof
用 awk
awk '{if($4 != 1 ) print $0}' temp.txt