Awk
嘗試使用 AWK 根據另一個文件從一個文件中查找完整的字元串值
您好,我有 2 個文件,第一個文件包含一些值,例如
powershell vectormaps JuniperSA
以及包含值和 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
似乎什麼都沒有發生。我在這裡想念什麼?
使用
awk
$ awk 'FNR==NR {a[$1]=$2; next} {$(NF+1)=a[$1]}1' file2 file1 powershell 610 vectormaps 729 JuniperSA 826
如前所述,沒有理由使用
while
循環或awk
不管文件可能變得多麼複雜。您只是想在第二個文件中列印包含第一個文件中的字元串的行。最好使用 KISS 方法,而不是在不必要的地方復雜化。以下將做你想要的:
grep -f file1 file2.csv