2つの入力ファイルがあります。
ファイル1の内容は(file1
)です。
"BRGTEST-242" a.txt
"BRGTEST-240" a.txt
"BRGTEST-219" e.txt
ファイル2の内容は(file2
)です。
"BRGTEST-244" a.txt
"BRGTEST-244" b.txt
"BRGTEST-231" c.txt
"BRGTEST-231" d.txt
"BRGTEST-221" e.txt
最終出力を()として取得したいと思いますfile3
。
BRGTEST-244 is depdendent on BRGTEST-242 for file a.txt
BRGTEST-244 is depdendent on BRGTEST-240 for file a.txt
BRGTEST-221 is dependent on BRGTEST-219 for the file e.txt
シェルスクリプトロジックを書くには?試してみましたが、awk
目的の結果が得られませんでした。
ベストアンサー1
多次元配列をサポートするGNU Awk(gawk)を使用すると、ロジックは次のようになります。
gawk '
NR==FNR {
a[$2][++c[$2]] = $1; next
}
$2 in a {
for (i in a[$2])
print $1 " is dependent on " a[$2][i] " for " $2
}
' File1 File2
"BRGTEST-244" is dependent on "BRGTEST-242" for a.txt
"BRGTEST-244" is dependent on "BRGTEST-240" for a.txt
"BRGTEST-221" is dependent on "BRGTEST-219" for e.txt
引用符も削除する必要がある場合:
gawk '
NR==FNR {
a[$2][++c[$2]] = substr($1,2,length($1)-2); next
}
$2 in a {
for (i in a[$2])
print substr($1,2,length($1)-2) " is dependent on " a[$2][i] " for " $2
}
' File1 File2
BRGTEST-244 is dependent on BRGTEST-242 for a.txt
BRGTEST-244 is dependent on BRGTEST-240 for a.txt
BRGTEST-221 is dependent on BRGTEST-219 for e.txt