開発運用

sed によるテキスト編集方法

sed(ストリームエディタ)は、LinuxやUnix系のシステムで非常に強力なテキスト操作ツールです。主に、ファイル内のテキストを編集、置換、削除、追加するために使用されます。このツールは、シンプルながらも複雑なテキスト編集を自動化できるため、システム管理者や開発者にとって欠かせないツールとなっています。

sedの基本的な使い方

sedは、コマンドラインで動作し、パイプ(|)を使って他のコマンドと組み合わせて使用することができます。最も基本的なsedのコマンドの構文は以下の通りです。

nginx
sed 'コマンド' ファイル名

ここで、「コマンド」はsedに実行させる処理を示し、「ファイル名」は編集対象のファイルです。

例1: ファイルの内容を表示する

sedを使って、指定したファイルの内容をそのまま表示することもできます。特にオプションを指定せずに実行すると、入力ファイルの内容がそのまま標準出力に出力されます。

nginx
sed '' ファイル名

例2: 特定の行を表示する

sedを使って特定の行だけを表示することも可能です。たとえば、1行目だけを表示したい場合、以下のように指定します。

nginx
sed -n '1p' ファイル名

置換操作

sedの最もよく使用される機能は、テキストの置換です。sコマンドを使って、文字列を検索して置き換えることができます。基本構文は次の通りです。

nginx
sed 's/検索文字列/置換文字列/' ファイル名

例3: 文字列の置換

たとえば、example.txtというファイル内の「apple」という文字列を「orange」に置き換える場合、以下のように実行します。

nginx
sed 's/apple/orange/' example.txt

このコマンドは、「apple」という文字列を見つけて「orange」に置き換えますが、最初に見つかった1回だけを置き換えます。

例4: すべての一致する文字列を置換

ファイル内のすべての「apple」を「orange」に置き換えるには、g(グローバル)オプションを使用します。

nginx
sed 's/apple/orange/g' example.txt

これにより、ファイル内の「apple」がすべて「orange」に置き換えられます。

例5: 置換をファイルに直接書き込む

sedコマンドの結果を直接ファイルに反映させたい場合、-iオプションを使用します。これにより、ファイルの内容が直接変更されます。

nginx
sed -i 's/apple/orange/g' example.txt

削除操作

sedを使用して、テキスト内の行を削除することもできます。行を削除する場合は、dコマンドを使います。

例6: 特定の行を削除

たとえば、3行目を削除したい場合は以下のように実行します。

nginx
sed '3d' example.txt

このコマンドは、3行目を削除します。

例7: 条件に一致する行を削除

特定の文字列を含む行を削除したい場合は、/パターン/dという構文を使用します。

nginx
sed '/apple/d' example.txt

これにより、「apple」を含む行が削除されます。

挿入と追加操作

sedでは、テキストの挿入や追加も行うことができます。これを行うには、i(挿入)またはa(追加)コマンドを使用します。

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

たとえば、2行目の前に「Hello, world!」というテキストを挿入したい場合は、次のように実行します。

nginx
sed '2i Hello, world!' example.txt

例9: 特定の行の後にテキストを追加

同じく、3行目の後にテキストを追加したい場合は、以下のようにします。

vbnet
sed '3a This is a new line.' example.txt

複雑な操作と正規表現

sedでは、正規表現を使ってさらに複雑なパターンを検索・置換することができます。たとえば、数字や特定の文字列を扱う際に役立ちます。

例10: 数字の前にテキストを追加

ファイル内のすべての数字の前に「数字: 」を追加する場合、次のように正規表現を使います。

nginx
sed 's/[0-9]/数字: &/' example.txt

このコマンドは、数字の前に「数字: 」という文字列を追加します。

sedの実行結果を確認する

sedコマンドはデフォルトで標準出力に結果を表示しますが、ファイルを変更するわけではありません。変更を直接ファイルに反映させたい場合は、前述のように-iオプションを使用します。

また、変更内容を確認するために、変更前と変更後を比較したい場合は、diffコマンドなどを利用して比較することができます。

sedの便利な活用法

  1. 複数の操作を一度に実行: 複数のsedコマンドをセミコロンで区切って一度に実行することができます。
swift
sed 's/apple/orange/; s/banana/grape/' example.txt
  1. ファイル全体で処理を繰り返す: 複数のファイルに対して一括でsed操作を行いたい場合は、-iオプションとともにファイルを指定することができます。
nginx
sed -i 's/apple/orange/g' *.txt
  1. 置換パターンに変数を使う: スクリプト内で変数を使って置換パターンを動的に変更することもできます。
bash
pattern="apple" sed "s/$pattern/orange/" example.txt

終わりに

sedは、シンプルなテキスト置換から、複雑なファイル操作まで幅広い用途に対応しています。使いこなすことで、ファイル操作やデータ処理の効率が大幅に向上します。特に大量のデータを一括で処理したい場合や、スクリプト内で自動化を図りたい場合には、非常に有効なツールとなります。

Back to top button