方向性未定のブログ

今は仕事の備忘録や思ったことをメモしている。

sedの基本

sedの基本

コマンド文法

sed [-e,-f,-n] 'instruction' file > file

解説

オプション

  • [-e]
    オプションeの後には必ず命令があるという意味になる。 複数の命令をする場合、-e 命令文 -e 命令文 とすれば複数の命令を行える。

  • [-f]
    命令文を記載したファイルを指定する場合のオプション

  • [-n]
    全ての入力行を出力するのがsedの基本動作で、-nを指定することで出力されない。 このオプションを指定したときのみ、命令文にpを指定し、変更箇所のみ出力できる。

  • 'instruction'
    命令部になり、シングルクォーテーションで囲むことで、空白や特殊な文字を そのまま命令として渡すことができる。

  • \> file
    リダイレクションで出力先の指定をする。 省略すると標準出力に出力されるため、通常は変更後のファイルを指定する。

命令文

置換

  • 命令文の例
    sed 's/pattern/replacement/p' file

    • s 置換を意味する。ほかにa追加i挿入c変更などがある。

    • pattern スラッシュで囲まれた内容は正規表現で置換対象になる。

    • replacement 置換後の内容も正規表現で表す。

    • p オプションに-nを指定した場合に変更箇所のみ出力する命令。

削除

  • 命令文の例 1
    sed '1d' file

  • 1d 1は一行目を表す。

  • $d $は最終行のみ削除する。正規表現の行末を表す$とは違う。

  • /^$/d /で囲み、正規表現で^$を指定すれば、空白行のみ削除することができる。

  • 50,$d 50行目から最終行までを削除することができる。

パターンを以下のように指定することで、適用範囲を指定することができる。
* 命令文の例 2
list.txtの内容が以下のようになっているとする。

John Daggett, 341 King Road, Plymouth MA
Alice Ford, 22 East Broadway, Richmond VA
Orville Thomas, 11345 Oak Bridge Road, Tulsa OK
Terry Kalkas, 402 Lans Road, Beaver Falls PA
Eric Adams, 20 Post Road, Sudbury MA
Hubert Sims, 328A Brook Road, Roanoke VA
Amy Wilde, 334 Bayshore Pkwy, Mountain View CA
Sal Carpenter, 73 6th Street, Boston MA

以下のようなコマンドを実行する。
sed /MA/,/VA/d list.txt

実行結果
Orville Thomas, 11345 Oak Bridge Road, Tulsa OK
Terry Kalkas, 402 Lans Road, Beaver Falls PA
Amy Wilde, 334 Bayshore Pkwy, Mountain View CA

以上