$4 が 1 行の場合、テキスト ファイルから行を削除したい
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を使用する 1 つの方法:-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