ファイル内の特定の文字を含む行を削除する

2021-05-24

特定の文字を含む行を削除して別名で出力する

ファイル内で特定の文字列を含む行を削除するには、「awk」, 「grep」 , 「sed」コマンドで削除できますが、今回は「sed」コマンドを利用した場合の方法を紹介します」

下記のように、北海道、東北、関東の都道府県のファイルがあった場合「Tohoku」を削除したい場合は、「sed -e '/Kanto/d’ test.txt > aaa.txt」のようにすれば、「Tohoku」を覗いた行のファイルが保存されます

書式:sed -e /’削除対象の文字列’/d (ファイル名) > (出力ファイル名)

$ cat test.txt
Hokkaido Hokkaido Sapporo
Tohoku Aomori Aomori
Tohoku Iwate Morioka
Tohoku Miyagi Sendai
Tohoku Akita Akita
Tohoku Yamagata Yamagata
Tohoku Fukushima Fukushima
KantoKanto Ibaraki Mito
Kanto Tochigi Utsunomiya
Kanto Gumma Maebashi
Kanto Saitama Saitama
Kanto Chiba Chiba
Kanto Tokyo Shinjuku
Kanto Kanagawa Yokohama

# 「Kanto」を含む行を削除して「aaa.txt」を出力する
$ sed -e '/Kanto/d' test.txt > aaa.txt

# 「Kanto」を含まれていないか確認
$ cat aaa.txt
Hokkaido Hokkaido Sapporo
Tohoku Aomori Aomori
Tohoku Iwate Morioka
Tohoku Miyagi Sendai
Tohoku Akita Akita
Tohoku Yamagata Yamagata
Tohoku Fukushima Fukushima

特定の文字を含む行を削除して、同一ファイルに上書きしたい

特定の文字を含む行を削除して、同一ファイルに上書き(置き換え)したい場合は、「sed」コマンドで「-i」 のオプションを使用します。

書式:sed -i -e /’削除対象の文字列’/d (ファイル名)

# 「Tohoku」を含む行を削除して、「test.txt」を上書きをする
$ sed -i -e '/Tohoku/d' test.txt

# 「Tohoku」を含まれていないか確認
$ cat test.txt
Hokkaido Hokkaido Sapporo
KantoKanto Ibaraki Mito
Kanto Tochigi Utsunomiya
Kanto Gumma Maebashi
Kanto Saitama Saitama
Kanto Chiba Chiba
Kanto Tokyo Shinjuku
Kanto Kanagawa Yokohama

「-i」の後の文字でバックアップファイルの拡張子を指定すると、バックアップファイル名が作成できます

$ sed -i.bak -e '/Tohoku/d' test.txt

 

スポンサーリンク