おぼえがき

おぼえがき

sed 範囲指定の削除

2007-03-02 | sed awk
先頭からAAAまで消したいとき
sed -i "1,/AAA/d" ${ファイル}

BBBから最後まで消したいとき
sed -i "/BBB/,$d" ${ファイル}

動かん

なんで・・・

sed -i "/BBB/,$ d" ${ファイル}
$とdの間にスペース入れたら動いた・・・

はまった。

awk 動的な変数を正規表現にセットさせる

2007-03-02 | sed awk
検索対象文字列が決まってるときは、

awk '$1 ~ /検索文字列/' ファイル名

でできたんだけど、
検索文字列が動的だったときのやり方が
よくわからんかったけど、

awk '$1 ~ /'"$検索文字列変数"'/' ファイル名

で実現可能。

さらに、

awk '$1 ~ /'"${検索文字列変数:-*}"'/' ファイル名

なんて、こともできる。

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(挿入)パターンスペースのカレント行の前に指定のテキストを入れる