• 締切済み

特定文字列を除外する方法(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

  • sedで特定の文字列を抜き出す方法

    有識者の知恵をお借りしたいのですが、以下のようなエラーログの出力結果が あった場合、AAAAA01が含まれる文字列の括弧の中の部分をsedで抜き出したい 場合はどのような指定をすればよいでしょうか。 括弧の中の文字はランダムで毎回同じとは限らない場合の指定方法をご教示下さい。 AAAAA00 AAAAA01 AAAAA02 AAAAA03 AAAAA04 AAAAA05 AAAAA06 (AAAAA07) BBBBB00 BBBBB01 BBBBB02 BBBBB03 BBBBB4 BBBBB05 BBBBB06 (BBBBB7) CCCCC00 CCCCC01 CCCCC02 CCCCC03 CCCCC4 CCCCC05 CCCCC06 (CCCCC7) 以下のコマンドで問題なく処理されますでしょうか。 sed -n "s/.*AAAAA01.*\((,)*\)\$ よろしくお願い致します。

  • 【Excel2007】A列の値がB列に存在しないことを確認したい

    いつもお世話になっております。 Excel2007を使用しております。 次のような一覧があります。 A列   B列 aaaaa aaaaa bbbbb bbbbb ccccc ddddd ddddd fffff eeeee A列にはあるが、B列にはない値を取得したいと 思っております。 この例であれば、「ccccc」と「eeeee」を抜き出したいのです。 何か関数などで抜き出す方法がございましたら、 教えて頂けませんか? A列、B列ともに2000行程度あるため、調査に苦労しています。 ぜひよろしくお願いいたします。

  • グーグルドキュメント(文書)で2列にする方法

    グーグルドキュメント(文書)で2列にしたいです。 横書きの場合。 左半分で、左上から始まり下にまでいく。 右半分の上にから始まり下までいくと、次のページ・・・ イメージだとこんなかんじです。 1枚目 aaaaa bbbbb aaaaa bbbbb aaaaa bbbbb aaaaa bbbbb aaaaa bbbbb aaaaa bbbbb aaaaa bbbbb aaaaa bbbbb 2枚目 ccccc  ddddd ccccc  ddddd ccccc  ddddd ccccc  ddddd ccccc  ddddd ccccc  ddddd ccccc  ddddd ccccc  ddddd

  • 秀丸のマクロでカラムごとの処理

    aaaaa,bbbbb,ccccc,ddddd,eeeee 上記のようなCSVファイルで、2カラム目のbbbbbと 4カラム目のdddddの文字を変換するという場合 どういったマクロになりますでしょうか? よろしくお願いします。

  • 複数のファイルを読み込み、1つのファイルとして出力する方法。

    Nakanoです。いつもお世話になっております。 例えばテキストファイルを2つ用意し、1つのテキストファイルとして 出力したいのですが、いまいちやり方が分かりません。出来るのかどうかも 分からないです。(汗) 下にサンプルデータがあります。取り合えず「in1.txt」「in2.txt」 を最終的に『out.txt』の様に仕上げたいのですが… # =in1.txt AAAAA BBBBB CCCCC DDDDD 1,000 2,000 3,000 4,000 1,001 2,002 3,003 4,004 1,010 2,020 3,030 4,040 1,100 2,200 3,300 4,400 =in2.txt EEEEE FFFFF GGGGG HHHHH 5,000 6,000 7,000 8,000 5,005 6,006 7,007 8,008 5,050 6,060 7,070 8,080 5,500 6,600 7,700 8,800 # =out.txt AAAAA BBBBB CCCCC DDDDD EEEEE FFFFF GGGGG HHHHH 1,000 2,000 3,000 4,000 5,000 6,000 7,000 8,000 1,001 2,002 3,003 4,004 5,005 6,006 7,007 8,008 1,010 2,020 3,030 4,040 5,050 6,060 7,070 8,080 1,100 2,200 3,300 4,400 5,500 6,600 7,700 8,800 # ・このデータはタブで区切っています。カンマはない場合もあります。 ・ファイルの中のそれぞれの文字列の数は固定です。行数も固定です。  各文字列の中の文字数はランダムです。  COPYコマンドを利用しても考えてみたのですが、後ろに続いちゃって  上手くいかなかったです。(笑)  Perlだと1つ目のファイルの1行目を配列に入れて、次に2つ目の  ファイルの1行目を配列に入れて、これを一旦出力して、同じ手順の  様な事を行を2行目、3行目、4行目、、とずらして繰り返す。って  感じでイメージしているのですが、どの様にソースを組めばいいのか  分かりませんでした。  どなたかご教授いただけないでしょうか? 宜しくお願い致します。

  • 配列のインデックスを連番にしたい

    array 0 => 'aaaaa' (length=5) 2 => 'bbbbb' (length=5) 4 => 'ccccc' (length=5) 7 => 'ddddd' (length=5) 9 => 'eeeee' (length=5) 上記のような配列があった場合に、 インデックスを0からの連番にしたいのですが 何かいい方法はありますか? 以下のようにarray_reverseを二度使うという方法を 思いついたんですが、こういう使い方は何か変ですよね。。。 $field = array_reverse($field); $field = array_reverse($field); var_dump($field); array 0 => 'aaaaa' (length=5) 1 => 'bbbbb' (length=5) 2 => 'ccccc' (length=5) 3 => 'ddddd' (length=5) 4 => 'eeeee' (length=5)

    • ベストアンサー
    • PHP
  • 連想配列を変数にする?

    こんにちは。 質問タイトルが変かもしれません。。。 xmlから受け取ったデータをphpで表示してます。 ・・・xmlデータの受取(?)は他社にお願いしており、私はphpでの表示のみなのでデータそのものは分かりません。 [aaaaa][bbbbb][ccccc][ddddd][depday] [aaaaa][bbbbb][ccccc][ddddd][cityname] [aaaaa][bbbbb][ccccc][ddddd][b][depday] [aaaaa][bbbbb][ccccc][ddddd][b][cityname] のように非常に長い連想配列があり、一番最後の[depday]と[cityname]は常に同じです。あまりにも長いので $hairetsu_1 = [aaaaa][bbbbb][ccccc][ddddd]; echo $hairetsu_1[depday]; echo $hairetsu_1[cityname]; $hairetsu_2 = [aaaaa][bbbbb][ccccc][ddddd][b]; echo $hairetsu_2[depday]; echo $hairetsu_2[cityname]; のように表示させる事は出来るのでしょうか? とんちんかんな質問だったらお許しください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • ファイルを移動するためのバッチファイル

    テキストファイル(1行に1つのファイル名が書かれていて、ファイルの数だけの行があるテキスト)を読み込み それをもとに、パス指定した参照先ディレクトリより、1つずつファイルを取得し、 パス指定した保存先ディレクトリに保存していくという、ファイルを移動(コピー)するためのバッチファイルを作りたいのですが どのようなコマンドを記述すればよいでしょうか? (できれば、MS-DOSのバッチファイルだと助かります) 例 [list.txt] aaaaa bbbbb eeeee [参照先] aaaaa bbbbb ccccc ddddd eeeee ↓ [保存先] aaaaa bbbbb eeeee

  • wordの段落を保持したままテキスト変換

    wordで作成した文書を、段落の見た目を保持したままテキストに変換する方法はないでしょうか? 段落がスペースに変換されるといいのですが、 コピー&ペーストですと行頭がそろってしまいます。 やりたいこと word文書 1.aaaaa  (1)bbbbb   ア.ccccc   イ.ddddd  (2)ddddd   ア.ccccc   イ.ddddd ↓ テキスト文書 1.aaaaa  (1)bbbbb   ア.ccccc   イ.ddddd  (2)ddddd   ア.ccccc   イ.ddddd コピー&ペーストの場合 word文書 1.aaaaa  (1)bbbbb   ア.ccccc   イ.ddddd  (2)ddddd   ア.ccccc   イ.ddddd ↓ テキスト文書 1.aaaaa (1)bbbbb ア.ccccc イ.ddddd (2)ddddd ア.ccccc イ.ddddd よろしくお願いいたします。

  • 普通の文章をABCの列に分けることって出来ますか?

    初心者です。 現在入力の作業を行っているのですが、もう少し効率のいい方法が無いものかとお知恵をお借りできたらと思い質問させていただきました。 多分、Excelになるのだと思いますが、ある膨大な文章をある部分で区切って、Excelの縦の列ABCの列に分けて入れたいと考えています。 少々説明が分かりにくいと思いますのが、行いたいことは、 aaaaa>bbbbb>ccccc>ddddd>eeeee> という文章があった場合に>の部分を置換することによってaaaaaはAの列bbbbbはBの列に入れてやることは出来ないものでしょうか? すみません、説明がうまく出来ませんので、わからない部分があれば補足させていただきますので、宜しくお願いいたします。