Project

General

Profile

文字列編集処理

sedコマンド(置換)

  • よく使うルール
    • 先頭の場合「^pattern」
    • 末尾の場合「pattern$」
  • マッチする文字列を置換する
    sed -i 's/before/after/g' filename
    
    • iオプション
      ファイルを指定して直接編集する
  • 標準出力を利用して該当行のみ表示する。
    cat filename |sed -n '/pattern/p'
    
    • nオプション
      マッチした行のみ出力する。
      ファイルにリダイレクトするため全件出力する場合は指定してはいけない。
  • 標準出力を利用してマッチする文字列を置換する
    cat filename |sed -n 's/before/after/p'
    
    • nオプション
      マッチした行のみ出力する。
      ファイルにリダイレクトするため全件出力する場合は指定してはいけない。
  • マッチする行を削除する
    # sed -i '/pattern/d' filename
    
    • iオプション
      ファイルを指定して直接編集する
  • 行の中の一部文字列だけ置換する
    sed -i -r 's/(^カラム名 *)変更前値$/\1変更後値/' ファイル名
    
    • i.bakオプション
      ファイルを指定して直接編集する。
      拡張子.bakファイルで変更前のファイルを同じ場所にバックアップする。
    • rオプション
      スクリプトコマンド('s/変更前/変更後/')の中で拡張正規表現を使用可能にする。
    • (^カラム名 *)
      『()』で括った文字列は、変更後にそのまま引用することができる
      『 *』はカラム名と値の間のスペースが複数あってもマッチするとする
    • 変更前値$
      『値$』は行末を示す。
      値の後にスペースやコメントがある場合は調整する必要がある。ただし何か指定しないと『param』で
      マッチさせたら『param_name』『param_date』なども誤爆して引っかかるので注意が必要。
    • \1変更後値
      『\1』は前段で『()』で括った引用の1つ目を指す。
      『()』が複数ある場合は『\2』等で指定することができる