2017-03-23 5 views
-1

ここに私の問題があります:grepを使用して複数のファイルに文字列を検索します。grepは検索された単語が特定の文字で始まり/終わる場合は無視します

「balloon」という言葉を探しています。 grepは "ここにバルーン"、 "loginxxballoonx"、 "balloon123"などのような風船を含む行を返しています。これは1つの場合を除いて問題ではありません: "/ balloon /"を見つけたら無視したいです。

どのように私は複数のファイル内のすべての「吹き出し」の文字列を探しますが、/前とし、(無視する「/風船/」)の後に、それらを無視することができます

編集:私は私の問題は、もう少し正確に以下となります。私の検索する文字列はファイルに格納されます。私はgrep -f mytokenfileを使用して、 "mytokenfile"ファイルに保存されているすべての文字列を検索します。例えば、私のファイル「mytokenfile」は次のようになります。

balloon 
avion 
car 
bus 

私は接頭辞と接尾辞が「/」であれば除き、接頭辞/接尾辞の有無にかかわらず、これらの文字列を含むすべての行を取得したいと思います。

+0

@RomanPerekhrestが指摘しているように、反転一致の2番目のgrep呼び出しが必要です。次に例を示します。grep -f mytokenfile testfile | grep -v -F "$(cat mytokenfileのトークン用); echo/$ token /; done)" – Markus

答えて

1

は編集^

grep [^/]balloon[^/] ballonfile 

否定記号を使用して作業する必要があります しかし、他のどの文字が先頭と最後ではない「バルーン」は存在する場合、これは動作しません。

+0

"loginxxballoonx"、 "/ balloon /" ' – RomanPerekhrest

+0

@RomanPerekhrestはい、 あなたが正しいです。私の悪い。 – Markus

0

は、(loginxxballoonx, sme text /balloon/ textなどの検索キーワードが複数回発生してラインがあるかもしれないことを考慮して)、次のアプローチを使用します。

cat testfile | grep '[^/]balloon[^/]' | grep -v '/balloon/' 

-v(--invertマッチ)

不一致の行を選択するには、一致の感覚を反転させます。 (-vはPOSIXで指定された です)

関連する問題