2008年1月18日金曜日

awkとgrepメモ(1)

■awkメモ
空白行区切りのファイルを編集する。(多分FAQ)
root@host: /tmp/tmp # cat <<-EOF >hoge.txt
> a
> b
> v
>
> d
> e
> f
> EOF
root@host: /tmp/tmp # ls
hoge.txt
root@host: /tmp/tmp # cat hoge.txt
a
b
v

d
e
f
root@host: /tmp/tmp # awk 'BEGIN{RS=""}{print $1,$2,$3}' < hoge.txt
a b v
d e f

■リストファイルでgrep -vする時の注意
リストファイルに空行が含まれると意図しない結果になります。↓
root@host: /tmp/tmp # cat <<-EOF > source.txt
> aaa
> bbb
> ccc
> EOF
root@host: /tmp/tmp # cat <<-EOF > list.txt
> bbb
> XXX
> EOF
root@host: /tmp/tmp # grep -f list.txt source.txt # 期待通り
bbb
root@host: /tmp/tmp # grep -v -f list.txt source.txt # 期待通り
aaa
ccc
root@host: /tmp/tmp # echo >> list.txt # 空行追加
root@host: /tmp/tmp # cat list.txt
bbb
XXX

root@host: /tmp/tmp # grep -f list.txt source.txt # 全部マッチしてしまう
aaa
bbb
ccc
root@host: /tmp/tmp # grep -v -f list.txt source.txt # 全部アンマッチしてしまう
root@host: /tmp/tmp #

0 件のコメント: