sedコマンドの使い方|一括置換・削除・挿入を行う方法

先生

sedコマンドはテキスト編集の強い味方!置換、削除、挿入をマスターして、作業効率を爆上げしよう🚀

sedコマンドとは?基本を理解しよう

sedコマンドは、テキストストリームに対して強力な編集操作を行うためのコマンドラインユーティリティです。文字列の置換、削除、挿入など、様々な処理をスクリプトを用いて自動化できます。特に、大量のテキストファイルを扱う際にその威力を発揮し、プログラミングやシステム管理の現場で広く利用されています。

sedはStream EDitorの略で、名前の通り、テキストをストリームとして扱い、編集を行います。ファイルの内容を直接変更するのではなく、編集結果を標準出力に出力するため、元のファイルを誤って変更してしまう心配がありません(もちろん、オプションで上書き保存も可能です)。

基本的な構文は以下の通りです。

sed 's/置換対象/置換後/g' ファイル名

この例では、ファイル内のすべての「置換対象」を「置換後」に置換します。’s’は置換コマンド、’g’はグローバルオプション(すべての出現箇所を置換)を意味します。

sedコマンドで一括置換:基本と応用

sedコマンドを使った一括置換は、テキストファイル内の特定の文字列を効率的に変更する上で非常に役立ちます。基本的な置換から、正規表現を使った複雑な置換まで、様々な応用が可能です。

基本的な置換の例:

sed 's/old_string/new_string/g' input.txt > output.txt

このコマンドは、input.txtファイル内のold_stringをすべてnew_stringに置換し、結果をoutput.txtに保存します。

正規表現を使った置換の例:

sed 's/[0-9]+/NUMBER/g' input.txt

このコマンドは、input.txtファイル内のすべての数字をNUMBERに置換します。[0-9]+は、1つ以上の数字にマッチする正規表現です。

特定の行のみを置換する場合:

sed '5s/old_string/new_string/g' input.txt

このコマンドは、input.txtファイルの5行目にあるold_stringnew_stringに置換します。

複数のファイルを一括で置換する場合 (GNU sed):

sed -i 's/old_string/new_string/g' *.txt

このコマンドは、カレントディレクトリにあるすべての.txtファイル内のold_stringnew_stringに置換します。-iオプションは、ファイルを直接編集することを意味します。注意して使用してください。

sedコマンドでテキストを削除する方法

sedコマンドは、テキストファイルから特定の行や文字列を削除するのにも使用できます。行全体の削除や、特定のパターンに一致する部分の削除など、柔軟な操作が可能です。

特定の行を削除する例:

sed '5d' input.txt

このコマンドは、input.txtファイルの5行目を削除します。dは削除コマンドを意味します。

特定のパターンに一致する行を削除する例:

sed '/pattern/d' input.txt

このコマンドは、input.txtファイル内でpatternを含む行をすべて削除します。

空白行を削除する例:

sed '/^$/d' input.txt

このコマンドは、input.txtファイル内のすべての空白行を削除します。^$は、空の行にマッチする正規表現です。

sedコマンドでテキストを挿入する方法

sedコマンドを使用すると、テキストファイル内の特定の場所に新しいテキストを挿入できます。行の前、行の後、または特定のパターンに一致する行に対して挿入するなど、様々な方法があります。

特定の行の前にテキストを挿入する例:

sed '5i insert_text' input.txt

このコマンドは、input.txtファイルの5行目の前にinsert_textを挿入します。iは挿入コマンドを意味します。

特定の行の後にテキストを挿入する例:

sed '5a append_text' input.txt

このコマンドは、input.txtファイルの5行目の後にappend_textを挿入します。aは追加コマンドを意味します。

特定のパターンに一致する行の後にテキストを挿入する例:

sed '/pattern/a append_text' input.txt

このコマンドは、input.txtファイル内でpatternを含む行の後にappend_textを挿入します。

参考リンク

まとめ

sedコマンドは、テキスト処理において非常に強力なツールです。一括置換、削除、挿入など、様々な操作を簡単に行うことができます。この記事で紹介した基本的な使い方をマスターすれば、日々の作業効率を大幅に向上させることができるでしょう。sedコマンドを使いこなして、快適なプログラミングライフを送りましょう!