おぼえがき

おぼえがき

sed 複数行を一行に置換

2007-02-27 | sed awk
ファイルの中身が以下のようになっている
-----------------------
1111111111
2222222222
abc
3333333333
4444444444
5555555555
jhi
4444444444
5555555555
6666666666
-----------------------

で、

abcからjhiの間までを
3333333333
に置換したい。


sed "/abc/,/jhi/c¥(¥がいる)
3" ${ファイル名}

ってやれば、

-----------------------
1111111111
2222222222
3333333333
4444444444
5555555555
4444444444
5555555555
6666666666
-----------------------


なるほどね


cのほかに、
a(追加)パターンスペースのカレント行の後ろに指定のテキストを入れる
i(挿入)パターンスペースのカレント行の前に指定のテキストを入れる

sed 読み込んだファイルの内容を置換する

2007-02-27 | sed awk
テンプレートにスタイルシートの宣言がXXXXXXって入ってて、
それを削除した上に、3行変わりにYYYYって言うファイルの中に
入っているスタイルシートの行を追加したい。




for i in $(ls -1 該当テンプレートファイル);
do
 sed -i '/XXXXXX/ {    #XXXXXX にマッチしている行を抽出
 r YYYYY         #YYYYYからファイルを読み込む
 /.*XXXXXX.*$/d      #XXXXXXの行は、削除
}' $i;
done

できる。

ちょっと感動。