1

awkスクリプトfile1コードを使用して、一致する文字列を持つレコードを別のファイルに出力したい

849002|48|1208004|1
849007|28|1208004|1
855003|48|1208004|1
855004|28|1208004|1
855006|28|1208004|1

file2コード:

00990029000000004804470425|ST1400029|0.550|Recurring|1248073|ST1400029
00990029000000008410517183|IM1450029|1.000|Recurring|855003|ST1400029
009900290000000000007800612988|IM3350029|1.000|Recurring|1248063|ST1400029

855003各サンプルの中央の行で発生することに注意してください。それは私が探している一致であり、出力は次のようになります。

00990029000000008410517183|IM1450029|1.000|Recurring|855003|ST1400029

file2の$5でfile1の$1を検索したいので、一致が見つかった場合は、これを試した行を出力しますが、ゼロレコードが返されます

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

あなたの助けが私の問題を解決するでしょう、私はデータの長いリストを検索しなければなりません

4

2 に答える 2

3

-Fフラグを使用して区切り文字を設定することを忘れないでください。

awk -F "|" 'FNR==NR { a[$1]; next } $5 in a' file1 file2

結果:

00990029000000008410517183|IM1450029|1.000|Recurring|855003|ST1400029
于 2013-02-15T16:23:54.140 に答える
2

これを試してください(テストしていません)

awk 'NR==FNR{a[$1];next}$5 in a' file1 file2
于 2013-02-15T16:23:42.813 に答える