Skip to content

sed#

基本的なコマンド#

sed コマンドは UNIX および Linux システムでテキストを編集するための強力なツールです。 以下は sed の基本的な使い方をいくつか示します:

  1. 置換: テキストの置換は sed の最も一般的な使い方の一つです。
    sed 's/検索パターン/置換文字列/' ファイル名
    

例:hello.txt というファイルの中で "apple" を "orange" に置換する場合

sed 's/apple/orange/' hello.txt

すべての "apple" を "orange" に置換する場合

sed 's/apple/orange/g' hello.txt

  1. 行の削除: 特定のパターンを含む行を削除する場合
    sed '/検索パターン/d' ファイル名
    

例:hello.txt の中で "apple" という単語を含むすべての行を削除する場合

sed '/apple/d' hello.txt

  1. 行を表示: 特定のパターンを含む行だけを表示する場合

    sed -n '/検索パターン/p' ファイル名
    

  2. 行の追加と挿入: 例:hello.txt の3行目の後に新しい行を追加する場合

    sed '3a\新しい行の内容' hello.txt
    

3行目の前に新しい行を挿入する場合

sed '3i\新しい行の内容' hello.txt

これは sed コマンドの基本的な使い方の一部です。 sed は非常に多機能で、これらの基本的な操作だけでなく、さまざまな高度なテキスト操作もサポートしています。

レシピ#

sed は非常に強力で、多岐にわたる操作が可能です。以下はいくつかの一般的な sed レシピを示します:

  1. 特定の行を削除
  2. 最初の行を削除する:
    sed '1d' ファイル名
    
  3. 最後の行を削除する:

    sed '$d' ファイル名
    

  4. 特定の行だけを表示

  5. 最初の5行だけを表示する:

    sed '6,$d' ファイル名
    

  6. 行の範囲を表示または削除

  7. 10行目から20行目までを表示する:
    sed -n '10,20p' ファイル名
    
  8. 10行目から20行目までを削除する:

    sed '10,20d' ファイル名
    

  9. パターンにマッチする行の前後に行を追加

  10. "apple" という文字列がある行の前に "fruit:" という行を追加する:
    sed '/apple/i\fruit:' ファイル名
    
  11. "apple" という文字列がある行の後に "delicious" という行を追加する:

    sed '/apple/a\delicious' ファイル名
    

  12. 特定の文字列が含まれる行を削除

  13. "apple" という文字列を含む行をすべて削除する:

    sed '/apple/d' ファイル名
    

  14. 空白行を削除

  15. すべての空白行を削除する:

    sed '/^$/d' ファイル名
    

  16. 行番号に基づいて置換

  17. 5行目の "apple" を "orange" に置換する:
    sed '5s/apple/orange/' ファイル名
    

これらは sed の基本的なレシピの一部です。実際のニーズに応じて、これらのコマンドを組み合わせたり、変更したりすることができます。

正規表現#

sed コマンドで正規表現を使用すると、非常に柔軟な文字列操作が可能になります。以下は、正規表現を使った sed の使用方法のいくつかを示します:

  1. 任意の数字を置換する

    sed 's/[0-9]*/<置換文字列>/' ファイル名
    

  2. 特定のパターンの後の文字列を置換: "apple" の後に続く任意の数字を "orange" に置換する場合:

    sed 's/apple[0-9]*/appleorange/' ファイル名
    

  3. 行の先頭や末尾にマッチするパターンを検索・置換

  4. 行の先頭が "#" で始まる行を削除する:
    sed '/^#/d' ファイル名
    
  5. 行の末尾が "apple" で終わる行に "orange" を追加する:

    sed 's/apple$/appleorange/' ファイル名
    

  6. 文字クラスを使用

  7. 小文字のアルファベットをすべて "X" に置換する:

    sed 's/[a-z]/X/g' ファイル名
    

  8. キャプチャグループを使用して部分置換: "apple" の前と後ろの数字を入れ替える場合(例: "123apple456" → "456apple123"):

    sed 's/\([0-9]*\)\(apple\)\([0-9]*\)/\3\2\1/' ファイル名
    

  9. 任意の文字(.)と繰り返し(*)

  10. "apple" と "orange" の間の文字をすべて削除する:
    sed 's/apple.*orange/appleorange/' ファイル名
    

正規表現の詳細や他の特性を学ぶと、sed でできることがさらに広がります。 上記は基本的な例に過ぎませんが、これを基に多くのパターンマッチングやテキスト操作タスクを実行することができます。