Linux の sed コマンドは、入力ストリーム (ファイルまたはパイプラインからの入力) に対して基本的なテキスト変換を実行できる強力なストリーム エディターです。ファイル内のテキストの検索、検索と置換、挿入、削除に広く使用されています。単純なテキスト エディターとは異なり、sed はパイプラインでデータを処理し、シェル スクリプトでのテキスト操作を自動化するのに特に便利です。
sed の主な機能には次のものがあります:
- 正規表現を使用してファイル内のテキストを置換します。
- 特定のパターンに基づいて行を削除します。
- 特定の行にテキストを挿入または追加します。
- 複雑なパターンに基づいてテキストを変換します。
このガイドでは、Linux での sed コマンドの実用的な使用方法を示す例を示し、さまざまなテキスト処理タスクにどのように活用できるかを示します。
Sed コマンドの主な構文とオプション
例を詳しく調べる前に、sed コマンドの基本的な構文を理解することが重要です。
sed [OPTION]... {script-only-if-no-other-script} [input-file]...
よく使用されるオプションをいくつか示します。
- -e: 複数のコマンドの使用を許可します。
- -n: 各行を印刷するときのデフォルトの動作を抑制します。
- -i: ファイルをその場で編集します (元のファイルが変更されるので注意してください)。
Linux の Sed コマンドの基本的な例
基本的なテキスト置換
sed の最も一般的な用途の 1 つは、テキストを置換することです。
echo "Welcome to Linux" | sed 's/Linux/Unix/'
出力:
Welcome to Unix
グローバル代替
デフォルトでは、sed は行内の最初の出現を置き換えます。すべての出現を置き換えるには、「g」フラグを使用します。
echo "Apples are better than apples" | sed 's/apples/oranges/g'
出力:
Apples are better than oranges
行の削除
sed は特定のパターンに基づいて行を削除することもできます。
echo -e "apple\norange\nbanana" | sed '/orange/d'
出力:
apple
banana
テキストの挿入と追加
パターン マッチの前または後に新しいテキスト行を導入できます。
echo "Hello" | sed 'i\Good Morning'
出力:
Good Morning
Hello
テキストの大文字と小文字の変更
sed では、y 関数を使用してテキストの大文字と小文字を操作できます。小文字を大文字に変換する例を見てみましょう。
echo "hello world" | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'
出力:
HELLO WORLD
Linux での Sed コマンドの高度な使用法
複数パターンのテキスト置換
複数のパターンの場合は、 -e を使用してさまざまな置換コマンドを連鎖させることができます。
echo "Welcome to Linux. I love Linux." | sed -e 's/Linux/Unix/' -e 's/love/adore/'
出力:
Welcome to Unix. I adore Linux.
条件付きテキスト置換
sed を使用すると、アドレスを使用して特定の条件に基づいてテキストを置き換えることができます。
echo -e "apple\nbanana\ncherry" | sed '/banana/s/$/ - favorite fruit/'
出力:
apple
banana - favorite fruit
cherry
正規表現でSedを使用する
正規表現の力を活用して複雑なパターンを一致させます。
echo "Price is $100" | sed 's/$[0-9]*/& (USD)/'
出力:
Price is $100 (USD)
複雑な置換のためのバック参照
後方参照を利用すると、一致したパターンの一部を遡って参照することができます。
echo "The white cat and black dog" | sed 's/\(white\|black\) \(cat\|dog\)/\2 \1/'
出力:
The cat white and dog black
-i オプションを使用したインプレース編集
sed の強力な機能の 1 つは、ファイルを直接編集できることです。これは -i オプションを使用して実現できますが、直接変更を行う前に必ず元のファイルをバックアップしてください。
echo "Original text" > temp.txt
sed -i 's/Original/Modified/' temp.txt
cat temp.txt
出力:
Modified text
結論
sed コマンドを理解して習得すると、Linux でテキスト ファイルを操作および処理する能力が大幅に向上します。提供されている例を実践することで、一般的なテキスト処理タスクを効率的に処理する方法、繰り返しの編集ジョブを自動化する方法、および sed をスクリプト ワークフローに組み込む方法を学習できます。さまざまな sed オプションとコマンドを定期的に試してみると、知識が深まり、その可能性を最大限に活用できるようになります。sed が Linux テキスト処理タスクにもたらす汎用性とパワーをお楽しみください。