sed (Stream Editor) コマンドはLinuxで、テキスト処理とファイル修正に使用される強力なツールです。ユーザーはファイル内のテキストを効率的に検索、置換、挿入、削除できるため、オートメーションやスクリプトにとって重要なコマンドとなっています。このガイドでは、実用的な例を用いて、sedコマンドを使用してLinuxのファイルを更新する方法を探ります。

なぜSedコマンドを使用するのか?

sedコマンドは以下の目的で広く使用されています:

テキスト置換 – ファイル内の単語、フレーズ、またはパターンを簡単に置き換えます。
バッチ処理 – スクリプトを使用して複数のファイルを一度に修正します。
効率性 – 大きなファイルを開かずに迅速に処理します。
インライン編集 – コマンドラインから直接ファイルを修正します。
オートメーション – 繰り返しのテキスト修正を処理するためにスクリプトで使用されます。

Sedコマンドの基本構文

sedコマンドの一般的な構文は:

sed [OPTIONS] 's/old-text/new-text/g' filename

ここで:

  • s – 置換を表します。
  • old-text – 置き換えられるテキスト。
  • new-text – 置き換え後のテキスト。
  • g – (グローバル) 行内のすべての出現を置き換えることを保証します。
  • filename – 修正されるファイル。

ファイルを更新するためのSedコマンドの使用方法

1. ファイル内の単語を置き換える

ファイル内の特定の単語を置き換えるには、次のようにします:

sed 's/Linux/Ubuntu/g' file.txt

これにより、file.txtの各行で最初の出現の「Linux」が「Ubuntu」に置き換えられます。

2. ファイル内のすべての出現を置き換える

ファイル内の単語のすべての出現をグローバルに置き換えるには:

sed 's/Linux/Ubuntu/g' file.txt

gフラグは、行内のすべての出現が置き換えられることを保証します。

3. ファイルをインプレースで編集する(ファイルを直接修正)

出力を表示せずにファイルを直接変更するには:

sed -i 's/Linux/Ubuntu/g' file.txt

-iオプションはインプレース編集を有効にし、元のファイルが別のバージョンを保存することなく修正されます。

4. 特定の行のみでテキストを置き換える

ファイル内の特定の行のみを修正するには、行番号を指定します:

sed '3s/Linux/Ubuntu/' file.txt

このコマンドは「Linux」を行3のみで「Ubuntu」に置き換えます。

5. 特定のテキストを含む行を削除する

特定の単語を含むすべての行を削除するには、次のようにします:

sed '/unwanted-text/d' file.txt

これにより、「unwanted-text」を含むすべての行が削除されます。

6. 行番号で特定の行を削除する

特定の行を削除するには、次のようにします:

sed '5d' file.txt

これにより、file.txtの行5が削除されます。

7. 行の前にテキストを挿入する

特定の行番号の前に行を追加するには:

sed '3iThis is a new line' file.txt

これにより、「This is a new line」が行3の前に挿入されます。

8. 行の後にテキストを挿入する

特定の行番号の後に行を挿入するには:

sed '3aThis is an appended line' file.txt

これにより、「This is an appended line」が行3の後に追加されます。

9. 複数のファイルで単語を置き換える

複数のファイルで一度にテキストを置き換えるには:

sed -i 's/Linux/Ubuntu/g' *.txt

このコマンドは、ディレクトリ内のすべての.txtファイルを修正し、「Linux」を「Ubuntu」に置き換えます。

高度なSedコマンド

1. 複数のSedコマンドを一緒に使用する

一度に複数の修正を行うには:

sed -i -e 's/Linux/Ubuntu/g' -e 's/Server/Cloud/g' file.txt

これにより、file.txt内の「Linux」が「Ubuntu」に、そして「Server」が「Cloud」に置き換えられます。

2. 正規表現を使用してSedを使う

ファイル内の数字を置き換えるには:

sed 's/[0-9]/#/g' file.txt

これにより、すべての数字が#に置き換えられます。

3. ファイルから特定の行を抽出する

5から10の行を抽出して表示するには:

sed -n '5,10p' file.txt

-nオプションはファイル全体の印刷を防ぎ、行5-10のみを表示します。

Sedを使用するためのベストプラクティス

  1. 常にファイルをバックアップしてから-iを使用する – 偶発的なデータ損失を防ぎます。
  2. 正規表現を使用する – 複雑な修正のための強力なパターンマッチング。
  3. 変更を適用する前にコマンドをテストする – -iなしでsedを実行して出力をプレビューします。
  4. オートメーションのためにスクリプトを使用する – バッチ処理のためにsedとシェルスクリプトを組み合わせます。

結論

sedコマンドは、Linuxでファイルを更新するための多用途で効率的なツールです。テキストを置き換えたり、行を削除したり、コンテンツを挿入したりする必要がある場合、sedはこれらのタスクを自動化し、簡素化できます。sedをマスターすることで、ワークフローを改善し、Linux管理やスクリプトでの生産性を向上させることができます。