1. ホーム
  2. bash

[解決済み] grep と awk を併用する

2022-03-16 17:08:52

質問

4列の数字が入ったファイル(A.txt)と3列の数字が入ったファイル(B.txt)があるのですが、どちらが正しいのでしょうか?以下の問題を解決する必要があります。

  1. A.txtの3列目がB.txtの3列目のどこかに現れる数字を持つ行をすべて探しなさい。

  2. あるディレクトリにA.txtのようなファイルが多数あり、そのディレクトリのすべてのファイルに対してこの処理を実行する必要があると仮定します。

どうすればいいのでしょうか?

どのように解決するのですか?

以下はその例です。以下のファイルを作成し、実行してください。

awk -f c.awk B.txt A*.txt 

c.awk

FNR==NR {
    s[$3]
    next
}

$3 in s {
    print FILENAME, $0
}

A1.txt

1 2 3
1 2 6
1 2 5

A2.txt

1 2 3
1 2 6
1 2 5

B.txt

1 2 3
1 2 5
2 1 8

と出力されるはずです。

A1.txt 1 2 3
A1.txt 1 2 5
A2.txt 1 2 3
A2.txt 1 2 5