こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

特定文字列を除外する方法(grep -v xxx の代替案)

ファイルhoge.txtに
aaaaa
bbbbb



xxxxx
と書かれているとします
ここから特定の文字列を除外するとき
egrep -v "aaaaa|bbbbb" hoge.txt
とすれば、aaaaaとbbbbbは除外され表示されますよね
これは"aaaaa|bbbbb"の部分で除外する対象を
指定するわけですが、出来れば"|"のような
セパレータではなく、単純に
xgrep -v aaaaa bbbbbと書きたいのですが
このような書き方ってありますか?

除外対象となる文字列が都度変わる(つまり
あるときはaaaaaとbbbbbを除去したいし、別の
場面ではcccccとdddddとeeeeeを除去したいなど)
ため、除去対象を配列として保持して
xgrep -v $exclude のように書くことができれば
配列を変えるだけでロジックに変更が起きないと
思っているのですがうまいやり方が見つかりません

投稿日時 - 2006-09-26 14:07:55

QNo.2432698

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

シェルやPerlでスクリプトを組めばいいです。

スクリプトの中で、引数で受け取った複数の文字列を「|」をはさんで連結して、
grep に渡せばいいです。

スクリプトを組む知識があれば簡単です。

投稿日時 - 2006-09-26 20:08:08

お礼

自己解決しました。ありがとうございました
------------------------------------
#!/bin/csh

set args=""

foreach x ( aaa bbb ccc )
set args=( ${args} -ve ${x} )
end

cat hoge.txt | grep ${args}
-------------------------------------

投稿日時 - 2006-09-26 21:03:44

あなたにオススメの質問