次の例は、カンマ区切りのcsvファイルから「H」で始まる行全体を削除する方法を示しています。
H,NYR,257,10,11,000, TESTING,055,000,2023-05-10
D,NYR,257,10,11,000, TESTING,055,000,2023-05-10
H,NYR,257,10,11,000, TESTING,055,000,2023-05-10
F,NYR,257,10,11,000, TESTING,055,000,2023-05-10
H,NYR,257,10,11,000, TESTING,055,000,2023-05-10
D,NYR,257,10,11,000, TESTING,055,000,2023-05-10
H,NYR,257,10,11,000, TESTING,055,000,2023-05-10
D,NYR,257,10,11,000, TESTING,055,000,2023-05-10
答え1
これはまたsed
はは必要ありませんawk
。grep -v '^H'
必要に応じて、出力を別のファイルにリダイレクトするか、別のプログラムにパイプすることは非常に簡単です。
ファイルを適切に編集する必要がある場合、sed -i
またはgrep
&を使用できます。sponge
例えば
sed -i -n '/^H/!p' file.csv
または
sed -i '/^H/d' file.csv
または
grep -v '^H' file.csv | sponge file.csv
個人的には、通常は内部編集を使用せず、ディスク容量が豊富で安価であるため、別々のファイルを使用することを好みますが、一度削除された情報は回復できません。
ファイル全体を処理する必要がある場合は、awk
スクリプトの上部に次の規則を追加するだけです。
/^H/ { next };
「H」で始まるすべての行をスキップします。他のすべての行は、通常どおり後続の awk ルールによって処理されます。
同様に、next if /^H/;
Perlスクリプトで「H」で始まる行をスキップするために使用できます。