2016-04-04 4 views
0

2つの(タブ区切りの)ファイルの最初の列を比較したいと思います。awk検索列が1つのファイルにあり、2番目のファイルの値と一致するかどうかを確認します

ファイル1

MOS A 141282 141938 
    LEE A 11121 14597 
    TOD B 19237 20373 
    LEA,DOT A 1 1000 
    MAS,ALE C 24597 24599 

ファイル2

LEE 
LEA 
ALE 
EEL 

所望の出力:今

LEE A 11121 14597 
    LEA,DOT A 1 1000 
    MAS,ALE C 24597 24599 

を、私はできる一致がある場合、例:ファイル1からすべてを印刷しますそれを取得して、次の列1の正確な一致を見つけてください:

awk 'NR==FNR { a[$1] =$1; next} $1 in a {print $0}' file2 file1 

与える:

LEE A 11121 14597 

をしかし、私はそれが記載されている複数の単語がある列1のエントリを拾うようにする方法へと困惑ビットです。彼らが他の(重要でない)言葉を持っているかどうかにかかわらず、私が探している言葉を持つすべての行を印刷したい。だから、どのように私はそれが

LEA,DOT A 1 1000 
    MAS,ALE C 24597 24599 

も私が探している単語を持っていることを認識し、それらを出力ファイルに印刷するように作るのですか? 多くの感謝!

あなたがループ内で正規表現マッチを行う必要があり

答えて

1

、私は思う:

awk 'NR==FNR { a[$1] = $1; next} 
      { for (k in a) if ($1 ~ a[k]) { print $0; break } }' file2 file1 

出力例:

LEE A 11121 14597 
    LEA,DOT A 1 1000 
    MAS,ALE C 24597 24599 
関連する問題