行の特定の列にあるファイルの特定の単語を Grep します。

行の特定の列にあるファイルの特定の単語を Grep します。

列に特定の数字を含むファイルがあり、別のファイルからその数字を含む列3の行を抽出しようとしています。

たとえば、次のようになりますextract.file

123
689
456

input.file~と

1 AB 123 home 123
1 AC 568 cat 568
1 BC 689 dog 123
1 BB 456 car 456

以下のみを含む結果ファイルが必要です。

1 AB 123 home 
1 BC 689 dog
1 BB 456 car

使った

grep -wF -f extract.file input.file > output.file

しかし、これには最後の列も含まれます。

1 BC 689 dog 123

では、どのようにして列3でのみ検索し、出力から最後の列を除外できますか?

ベストアンサー1

一方通行:

awk 'NR==FNR{a[$1];next}($3 in a){$NF="";print;}' extract.file input.file

最後の列を削除せずに行全体を取得するには:

awk 'NR==FNR{a[$1];next}($3 in a)' extract.file input.file

おすすめ記事