AWKを使用して、他のファイルに基づいてファイル内の文字列値全体を見つけようとします。

AWKを使用して、他のファイルに基づいてファイル内の文字列値全体を見つけようとします。

こんにちは。ファイルが2つあります。最初のファイルには、次の値が含まれています。

powershell
vectormaps
JuniperSA

2番目のファイルには値とIDが含まれています。

appid uid
SplunkforSnort 340
powershell 610
vectormaps 729
JuniperSA 826
postfix 933
SplunkforJuniperSRX 929
TA-barracuda_webfilter 952
TA-dragon-ips 954
dhcpd 392

そのため、AWKを使用してwhileループを実行して値とそのIDを取得しようとしましたが、出力ファイルには他の内容が書き込まれているようです。これが私がwhileループを実行する方法です。

while read $line;
do
awk '/'$line'/ {print $0}' file2.csv > new
done < file1

私の予想結果は次のようになります

powershell 610
vectormaps 729
JuniperSA 826

しかし、私の出力は

appid uid
SplunkforSnort 340
powershell 610
vectormaps 729
JuniperSA 826
postfix 933
SplunkforJuniperSRX 929
TA-barracuda_webfilter 952
TA-dragon-ips 954
dhcpd 392

何も起こらないようです。私がここで何を見逃しているのでしょうか?

ベストアンサー1

使用awk

$ awk 'FNR==NR {a[$1]=$2; next} {$(NF+1)=a[$1]}1' file2 file1
powershell 610
vectormaps 729
JuniperSA 826

おすすめ記事