sedメモ

文字処理系コマンド

よりsedメモ


置換コマンド

    [一般的な置換]
    コマンド 説明
    sed 's/A/B/' [infile] infile の中にある A を B に変換して標準出力へ出力。

    ex. sed 's/sample/example/' sample.txt

    cf. 「'」は「"」としても同じ。
    sed 's/z/x/' sample.txt sample.txt の各行の最初のzをxに変換する。
    sed 's/i/x/g' sample.txt sample.txt の各行の全てのzをxに変換する。
    sed 's/i/x/2' sample.txt sample.txt の各行の2番目のzをxに変換する。
    sed -e 's/z/x/' -e 's/i/x/2' sample.txt 2つの作業を同時に行う。

    sed 's/z/x/' sample.txt | sed 's/i/x/2' に同じ。
    sed -f sedscript sample.txt スクリプトファイルの作業を行う。

    sedscript の内容は次のようになっている。

      s/z/x/
      s/i/x/2

    [アドレスを指定する置換]
    コマンド 説明
    sed '/you/s/i/x/g' sample.txt you という文字列のある行の全てのzをxに変換する。
    sed '1,3s/i/x/g' sample.txt 1〓3行目の全てのzをxに変換する。

    cf. sed '1,3/s/i/x/g' sample.txt とする場合もあるようです。(未確認)
    sed '1,/abc/s/i/x/g' sample.txt 1行目からabcという文字列がある行までの全てのzをxに変換する。



    [削除]

    コマンド 説明
    sed 's/you//' sample.txt you を削除する。
    sed '/you/d' sample.txt you のある行を削除する。

    cf. grep -v you sample.txt と同じ。

正規表現

メタキャラク

    表現 名称 説明
    . ドット 改行以外の任意の一文字

    DOSワイルドカード「?」にあたるもの。
    * アスタリスク 直前の文字の0回以上の繰り返し

    cf. DOSでは、「*」は単純に複数の文字の代わりとなる。

    ex1. grep 'HH*' sample.txt の結果は Hello, World! だけだが、
    grep 'H*' sample.txt とすると、直前のHの0回以上の繰り返し
    すなわち「Hがあってもなくてもいいぞ!」という意味になるため、
    sample.txtの内容がすべて表示される。

    ex2. grep -w 's.*' sample.txt の結果は sed, sample の含まれる
    3行が表示される。
    ^ サーカムフレックス行頭という意味。

    使う位置によって実は意味が2通りにわかれる。

    ブラケット「[]」の中の一番先頭に置くと、それ以降に指定する文字以外という意味になる。
    $ ドル記号 行末のこと。

    ex. 「^$」は、「行末が先頭である」つまり、中味がなにもない
    (スペースさえも入ってない) 空行のこと。
    [ ] ブラケット 中に入っている文字のどれかひとつにあてはまることを示す。

    ex1. A[BC]は、ABあるいはACのこと。

    ex2. [0-9]は、数字のこと。

    ex3. [^0-9]は、数字以外のこと。

    ex4. [^0-9a-zA-Z]は、アルファベットと数字以外のこと。
    \ 円記号・バックスラッシュ メタキャラクタをメタではない普通の文字に戻す

    ex. A[BC]は、AB、あるいはACのこと

カプセル化

     変数として別の場所で使える形にすることをカプセル化といい、「\(」と「\)」でカプセル化する部分を指定する。
    コマンド 説明
    sed 's/\(.*\)/your file : \1/' sample.txt sample.txt のファイルの前に「your file :」という文字列を加えて出力する。