• 締切済み

特定文字列を除外する方法(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 のように書くことができれば 配列を変えるだけでロジックに変更が起きないと 思っているのですがうまいやり方が見つかりません

みんなの回答

  • mtfoggy
  • ベストアンサー率14% (37/255)
回答No.1

シェルやPerlでスクリプトを組めばいいです。 スクリプトの中で、引数で受け取った複数の文字列を「|」をはさんで連結して、 grep に渡せばいいです。 スクリプトを組む知識があれば簡単です。

since1983
質問者

お礼

自己解決しました。ありがとうございました ------------------------------------ #!/bin/csh set args="" foreach x ( aaa bbb ccc ) set args=( ${args} -ve ${x} ) end cat hoge.txt | grep ${args} -------------------------------------

関連するQ&A