Linux の sed コマンドとその例

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 テキスト処理タスクにもたらす汎用性とパワーをお楽しみください。

Joshua James

コメントを残す