Linuxのsedコマンドで、ファイルの文字列を置換、行削除する方法を解説します。
sedコマンドとは
入力されたテキストデータを行単位で読み取り、テキスト変換などの編集して、行単位で出力を行います。
主に文字列の置換や抽出に用いられて、正規表現にも対応しています。
sedはStream EDitorの略称です。
sedコマンドによる置換の構文
sedコマンドに-iオプションを指定することで置換後文字列でファイルを保存します。
sed -i s/置換前文字列/置換後文字列/g ファイル名sオプションは「substitute(代替)」という意味の英単語の頭文字で、sを指定することで置換前文字列を置換後文字列に置き換えることができます。
gオプションは、一致する文字列をすべて置換する際に指定します。
文字列を置換して保存
実行コマンド例
以下コマンドでtest.txtのit-lifeをIT-LIFEへ置換します。
sed -i s/it-life/IT-LIFE/g test.txt置換前後の確認
以下の通り、置換が行われたことを確認できました。
置換前の確認
$ cat test.txtit-life.net it-life.net applebanana it-life.net it-life.net置換後の確認
$ cat test.txtIT-LIFE.net IT-LIFE.net applebanana IT-LIFE.net IT-LIFE.net指定した行を削除して保存
sedコマンドに'1,3d'のように指定することで、行を削除することができます。
'1,3d'の場合は1行目~3行目の行を削除するという意味になります。
指定行の削除前
$ cat test2.txtaaabbbcccdddeeefff1行目~3行目を削除して保存
sed -i '1,3d' test2.txt指定行の削除後
以下の通り、1行目のaaaから、3行目のcccが削除されたことを確認できました。
$ cat test2.txtdddeeefff特定の文字列を含む行を削除して保存
特定の文字列を含む行を削除したい場合は'/eee/d'のように指定します。
'/eee/d'はeeeを含む行を削除するという意味です。
特定文字列行の削除前
$ cat test2.txtdddeeefffeeeを含む行を削除して保存
sed -i '/eee/d' test2.txt特定文字列行の削除後
以下の通りeeeの行が削除されたことを確認できました。
$ cat test2.txtdddfffsedコマンドのまとめ
sオプションを指定することで置換前文字列を置換後文字列へ変換できる。iオプションを指定することで置換後文字列でファイルを保存できる。gオプションを指定することで置換前文字列に一致するすべての文字列を置換できる。dオプションを指定することで、指定した条件の行を削除することができる。
以上で本記事の解説を終わります。
よいITライフを!