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

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

Amazonのアソシエイトとして、ITナレッジライフは適格販売により収入を得ています。

記事の文字数:865 / 総アクセス数:441 views

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オプションを指定することで、指定した条件の行を削除することができる。

Linuxユーザにお勧めの本

新しいLinuxの教科書 第2版

難易度
実用性
読みやすさ

一生モノの基礎知識が身につく定番書です。

ゼロからわかる Linuxコマンド200本ノック―基礎知識と頻出コマンドを無理なく記憶に焼きつけよう!

難易度
実用性
習得度

アウトプット重視で記憶に定着しやすい。反復練習でLinux操作が自由自在になります。

エンジニア1年生のための世界一わかりやすいLinuxコマンドの教科書

難易度
実用性
読みやすさ


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

Linuxユーザにお勧めの本

新しいLinuxの教科書 第2版

難易度
実用性
読みやすさ

一生モノの基礎知識が身につく定番書です。

人気記事


記事を評価

Thanks!
目次
Scroll to Top