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

$ ls | grep test test1.txt test1.txte

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

ファイル内で特定の文字列を含む行を削除するには「sed」コマンドで削除できます。

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

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

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

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

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

他のコマンドのオプションのように「-ie」と繋げて使いたいですが、この場合だと夜腕バックアップが作成されますので、オプションはわけて「-i」「-e」とした方がいいです。

「-i -e」と分けてオプションを使用した場合CentOS,Ubuntuでは、バックアップファイルは作成されませんでしたが、macOSだと「-i -e」としてもバックアップファイルが生成されました。macOSだと仕様が違うのかも知れません