2016-12-22 6 views
0

ファイル内のパターンを検索するために苦労しています。そのフィールドをパターンとして同じファイルを再度検索して、別のフィールドを取得します。パイプgrepの結果がawkになり、パイプフィールドのリストが同じファイルのgrepのパターンとして取得されます

CONNECT=desired_output CONNECTION=pattern2 
SEARCH=pattern1 CONNECTION=pattern2 

これまでのところ、私は無駄にこれらの不浄台無しにしようとしました::

zgrep -i pattern1 file | awk '{print $8}' | xargs -I % zgrep % file | zgrep pattern2 
zgrep -i pattern1 file | awk '{print $8}' | zgrep -f - file 

私は最後のgrepをオフのままにした場合、それは結果を与える(これだろうあなたは、データが次のようになりますと言うことができます必要な出力フィールドを得るために別のgrepとawkが必要です)。最後のgrepをインクルードすると、決して出力されません。

同様の質問は、この概念全体を実行できるawkを指しているようですが、私のユースケースに合わせて与えられた例を解読することはできません。

+1

期待される出力を追加できますか?あなたが得ようとしているものを正確に見るのは難しいです。 –

+0

期待値と実際の出力で更新されました。基本的に、ファイルには、それぞれが同じ "CONNECTION"キーを持つ多くの行があります。私はラインの1つのフィールドで検索していますが、私は両方のラインが同じキーを持つ別のラインにフィールドを取得したいと思います。 – dangerusty

+0

私はその正確な(テスト可能な)出力であり、その説明ではありません;) –

答えて

0

あなたはこのような何かをしたいようにあなたがテスト可能な入力/出力を提供しなかったため、テストされていない、サウンド:

awk ' 
NR==FNR { 
    if (/constant_regexp1/) { 
     dynamic_regexp2 = $8 
    } 
    next 
} 
$0 ~ dynamic_regexp2 
' file file 

言葉「パターンを使用しないでください"btwはあいまいなので、常に" string "または" regexp "を使用してください。

関連する問題