2017-03-29 10 views
-1

私は2つのファイル(下記参照)を持っており、ファイル1のパターンをファイル2(2列)からgrepしたいと考えています。私はそれが何かをしなければなら知っているファイル(リスト)から同じ行にGrepパターン

ABC SeqX SeqY SeqP 
    DEF SeqW SeqO 
    GHI SeqR Seql 

:出力は次のようになります。

File1 
ABC 
DEF 
GHI 

File 2 
ABC SeqX 
ABC SeqY 
ABC SeqP 
DEF SeqW 
DEF SeqO 
GHI SeqR 
GHI Seql 

同じ行にマッチをgrepするためにどのように私はそれが本当に簡単だと思いますが、私は任意の手掛かりを見つけることができませんでした以下のような:AWKと grep -f file 1 file2 > output

+1

あなたの難しさは、それが1行 'ABC SeqX SeqYに3行' ABC SeqX' 'ABC SeqY'' ABC SeqP'を回すことで、grepをしていませんSeqP。あなたはawkまたはperlが必要です。 – Arkadiy

+0

ファイル1のポイントは何ですか?あなたはfile2を読むだけで投稿した出力を生成することができます。それが目的を持っていればあなたの質問を編集して、投稿した例がその目的を示している - あなたが持っているすべてのもののように見えるのは、あなたが持っていない問題の解決です。 –

答えて

0

はい、grepの

awk 'FNR==NR { Ls[$1];next} 
    ($1 in Ls) { Ds[ $1] = Ds[ $1] " " $2 } 
    END { for(L in Ls) print L Ds[ L] } 
    ' File1 File2 
+0

こんにちはNeronLeVelu、私はコマンドを使用する場合は空の出力を取得します。 – Ibasan

+0

申し訳ありませんが、小さな誤植で、* END *セクションの 'LS'は実際に' Ls'でした。 – NeronLeVelu

+0

素晴らしい!ありがとう、NeronLeVelu! – Ibasan

0

ショートでAS_ISありませんソリューション:

awk 'FNR==NR{a[$1]=a[$1]" "$2; next}{if($1 in a) print $1a[$i]}' file2 file1 

出力:

ABC SeqX SeqY SeqP 
DEF SeqW SeqO 
GHI SeqR Seql 
+0

ありがとうRomanPerekhrest! – Ibasan

関連する問題