2つのファイルがあります。
file1.txt
abc def ghi jkl mno pqr
file2.txt
abc ghi abc xyz xyz xyz mno jkl def stu
(列区切り記号はタブです)
私はfile1.txt
次のようにgrepしようとしています。file2.txt
grep -w -f file1.txt file2.txt
次の結果が表示されます。
abc ghi
abc xyz
mno jkl
def stu
しかし、私が望むのは出力です両方以下のように、列1と列2file2.txt
に照会があります。file1.txt
abc ghi
mno jkl
どんな助けでも歓迎します。
ありがとうございます。
クマ
ベストアンサー1
各値をfile1.txt
配列に保存しますa
。次に、file2.txt
最初のフィールドと2番目のフィールドの両方を含む行を解析して印刷しますa
。
awk 'NR==FNR{a[$0];next}$1 in a && $2 in a' file1.txt file2.txt
のフィールド数に関係なく、file2.txt
すべてのフィールドを繰り返して検査を実行します。フィールドのいずれかがにない場合は次の行にa
進み、そうでない場合はその行を印刷します。
awk 'NR==FNR{a[$0];next}{for(i=1;i<=NF;i++){if(!($i in a)){next}}print}' file1.txt file2.txt