カンマ区切りのCSVファイルから「H」で始まる行全体を削除する方法

カンマ区切りのCSVファイルから「H」で始まる行全体を削除する方法

次の例は、カンマ区切りの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はは必要ありませんawkgrep -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」で始まる行をスキップするために使用できます。

関連情報