
列に特定の数字を含むファイルがあり、別のファイルからその数字を含む列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
答え2
パターンファイルに正規表現を使用します。
[0-9]\+ [A-Z]\+ 123
[0-9]\+ [A-Z]\+ 689
[0-9]\+ [A-Z]\+ 456
grep -f extract.file input.file
1 AB 123 home 123
1 BC 689 dog 123
1 BB 456 car 456
答え3
あなたが使用できるcut
:
grep -wF -f extract.file input.file | cut -d" " -f1,2,3,4 > output.file