
スポンサーリンク
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.txtaaabbbcccdddeeefff
1行目~3行目を削除して保存
sed -i '1,3d' test2.txt
指定行の削除後
以下の通り、1行目のaaa
から、3行目のccc
が削除されたことを確認できました。
$ cat test2.txtdddeeefff
特定の文字列を含む行を削除して保存
特定の文字列を含む行を削除したい場合は'/eee/d'
のように指定します。
'/eee/d'
はeee
を含む行を削除するという意味です。
特定文字列行の削除前
$ cat test2.txtdddeeefff
eeeを含む行を削除して保存
sed -i '/eee/d' test2.txt
特定文字列行の削除後
以下の通りeee
の行が削除されたことを確認できました。
$ cat test2.txtdddfff
sedコマンドのまとめ
s
オプションを指定することで置換前文字列
を置換後文字列
へ変換できる。i
オプションを指定することで置換後文字列
でファイルを保存できる。g
オプションを指定することで置換前文字列
に一致するすべての文字列を置換できる。d
オプションを指定することで、指定した条件の行を削除することができる。
以上で本記事の解説を終わります。
よいITライフを!