sedコマンドの備忘録
sedの備忘録を残す。
-e
オプションについて
-e は、その後の文字列が編集用コマンドだということを表す。編集コマンドが一つだけの場合は省略可。
以下の例で、16行目のコマンド実行時に-e
が未使用のため、エラーメッセージが表示されている。
1$ cat samplefile
2雷雨 : 雷をともなう雨
3長雨 : 数日以上続く雨の天気
4にわか雨 : 降水が地域的に散発する一過性の雨
5
6$ sed -e "s/雷/風/g" samplefile
7風雨 : 風をともなう雨
8長雨 : 数日以上続く雨の天気
9にわか雨 : 降水が地域的に散発する一過性の雨
10
11$ sed "s/雷/風/g" samplefile
12風雨 : 風をともなう雨
13長雨 : 数日以上続く雨の天気
14にわか雨 : 降水が地域的に散発する一過性の雨
15
16$ sed "s/雷/風/g" "s/ともなう/伴う/g" samplefile
17sed: s/ともなう/伴う/g: No such file or directory
18風雨 : 風をともなう雨
19長雨 : 数日以上続く雨の天気
20にわか雨 : 降水が地域的に散発する一過性の雨
21
22$ sed -e "s/雷/風/g" -e "s/ともなう/伴う/g" samplefile
23風雨 : 風を伴う雨
24長雨 : 数日以上続く雨の天気
25にわか雨 : 降水が地域的に散発する一過性の雨
-n
オプションについて
p
コマンド以外の出力を抑制するので、p
コマンドと一緒に使う。以下に使用例を示す。
6行目の実行ではsamplefileの1行目がプリントされ、9行目の実行では置換された行がプリントされる。
1$ cat samplefile
2雷雨 : 雷をともなう雨
3長雨 : 数日以上続く雨の天気
4にわか雨 : 降水が地域的に散発する一過性の雨
5
6$ sed -n "1p" samplefile
7雷雨 : 雷をともなう雨
8
9$ sed -n -e "s/雷/風/gp" samplefile
10風雨 : 風をともなう雨
デリミタは/
以外の文字でもOK
置換コマンドs
の直後の1文字がデリミタとして扱われる。
例えば以下のようにデリミタを@
として実行できる。
1$ cat samplefile
2雷雨 : 雷をともなう雨
3長雨 : 数日以上続く雨の天気
4にわか雨 : 降水が地域的に散発する一過性の雨
5
6$ sed -e "s@雷@風@g" samplefile
7風雨 : 風をともなう雨
8長雨 : 数日以上続く雨の天気
9にわか雨 : 降水が地域的に散発する一過性の雨
s
コマンドの囲み文字は"
が良い
囲み文字を'
にすると、変数使用時に置換されないので注意。以下例で、14行目の実行結果で置換されていないことがわかる。
変数を使わなければ'
でも可。
1$ cat samplefile
2雷雨 : 雷をともなう雨
3長雨 : 数日以上続く雨の天気
4にわか雨 : 降水が地域的に散発する一過性の雨
5
6$ before="雷"
7$ after="風"
8
9$ sed -e "s/$before/$after/g" samplefile
10風雨 : 風をともなう雨
11長雨 : 数日以上続く雨の天気
12にわか雨 : 降水が地域的に散発する一過性の雨
13
14$ sed -e 's/$before/$after/g' samplefile
15雷雨 : 雷をともなう雨
16長雨 : 数日以上続く雨の天気
17にわか雨 : 降水が地域的に散発する一過性の雨
18
19$ sed -e 's/雷/風/g' samplefile
20風雨 : 風をともなう雨
21長雨 : 数日以上続く雨の天気
22にわか雨 : 降水が地域的に散発する一過性の雨
複数のスペースを1個にする方法
基本正規表現の使用時は、スペースを2個並べる必要あり。以下例の6行目参照。
拡張正規表現を使用するには-r
オプションを指定する。(+
は拡張正規表現、その他の拡張正規表現に?
や{m,n}
がある)
1$ cat samplefile
2雷雨 : 雷をともなう雨
3長雨 : 数日以上続く雨の天気
4にわか雨 : 降水が地域的に散発する一過性の雨
5
6$ sed -e "s/ */ /g" samplefile
7雷雨 : 雷をともなう雨
8長雨 : 数日以上続く雨の天気
9にわか雨 : 降水が地域的に散発する一過性の雨
10
11$ sed -r -e "s/ +/ /g" samplefile
12雷雨 : 雷をともなう雨
13長雨 : 数日以上続く雨の天気
14にわか雨 : 降水が地域的に散発する一過性の雨
削除コマンドd
の使い方
パターンにマッチする文字列を含む行を削除対象としたり、行アドレスで指定することができる。
1$ cat samplefile
2雷雨 : 雷をともなう雨
3長雨 : 数日以上続く雨の天気
4にわか雨 : 降水が地域的に散発する一過性の雨
5
6$ sed -e "/一過性/d" samplefile
7雷雨 : 雷をともなう雨
8長雨 : 数日以上続く雨の天気
9
10$ sed -e "2,3d" samplefile
11雷雨 : 雷をともなう雨