【Linux】sedコマンドでファイルの文字列を置換・行削除する

【Linux】sedコマンドでファイルの文字列を置換・行削除する

Linuxでファイルの文字列を置換・行削除する方法を解説します。sedコマンドで置換や行削除を行い、-iオプションを指定することで、置換後文字列や削除した状態で保存することができます。

Linuxのsedコマンドで、ファイルの文字列を置換、行削除する方法を解説します。

sedコマンドとは

入力されたテキストデータを行単位で読み取り、テキスト変換などの編集して、行単位で出力を行います。
主に文字列の置換や抽出に用いられて、正規表現にも対応しています。
sedはStream EDitorの略称です。

sedコマンドによる置換の構文

sedコマンドに-iオプションを指定することで置換後文字列でファイルを保存します。

sed -i s/置換前文字列/置換後文字列/g ファイル名

sオプションは「substitute(代替)」という意味の英単語の頭文字で、sを指定することで置換前文字列置換後文字列に置き換えることができます。
gオプションは、一致する文字列をすべて置換する際に指定します。

文字列を置換して保存

実行コマンド

以下コマンドでtest.txtのit-lifeIT-LIFEへ置換します。

sed -i s/it-life/IT-LIFE/g test.txt

置換前後の確認

以下の通り、置換が行われたことを確認できました。

置換前

$ cat test.txt
it-life.net it-life.net apple
banana it-life.net it-life.net

置換後

$ cat test.txt
IT-LIFE.net IT-LIFE.net apple
banana IT-LIFE.net IT-LIFE.net

指定した行を削除して保存

sedコマンドに'1,3d'のように指定することで、行を削除することができます。 '1,3d'の場合は1行目~3行目の行を削除するという意味になります。

指定行の削除前

$ cat test2.txt
aaa
bbb
ccc
ddd
eee
fff

1行目~3行目を削除して保存

sed -i '1,3d' test2.txt

指定行の削除後

以下の通り、1行目のaaaから、3行目のcccが削除されたことを確認できました。

$ cat test2.txt
ddd
eee
fff

特定の文字列を含む行を削除して保存

特定の文字列を含む行を削除したい場合は'/eee/d'のように指定します。
'/eee/d'eeeを含む行を削除するという意味です。

特定文字列行の削除前

$ cat test2.txt
ddd
eee
fff

eeeを含む行を削除して保存

sed -i '/eee/d' test2.txt

特定文字列行の削除後

以下の通りeeeの行が削除されたことを確認できました。

$ cat test2.txt
ddd
fff

sedコマンドのまとめ

  • sオプションを指定することで置換前文字列置換後文字列へ変換できる。
  • iオプションを指定することで置換後文字列でファイルを保存できる。
  • gオプションを指定することで置換前文字列に一致するすべての文字列を置換できる。
  • dオプションを指定することで、指定した条件の行を削除することができる。

以上で本記事の解説を終わります。
よいITライフを!
Scroll to Top