這實際上就是我想要的命令,除了我想在第三列中打印使用shell命令的特殊東西(或者更多awk命令我猜,但我不知道我會如何適應原來的awk語句)。我需要幫助的是print命令中$ 2和ar [$ 4,$ 1]之間的僞命令替換,但爲了特殊性而將剩下的部分留下。在必須訪問awk命令的awk腳本中使用shell命令
awk 'NR==FNR{ar[$3,$2]=$1+ar[$3,$2]; }
NR>FNR && ar[$4,$1] {print "hs"$1,$2,`awk '$1 == #$1 from outer awk command# file2 | tail -n 1 | awk '{print $3}'`, ar[$4,$1]}' file1 file2
文件1的樣子
5 8 t11
15 7 t12
3 7 t14
文件2的樣子
8 4520 5560 t11
8 5560 6610 t12
8 6610 7400 t13
7 9350 10610 t11
7 10610 11770 t12
7 11770 14627 t13
7 14627 16789 t14
和輸出應該像
8 4520 7400 5
7 10610 16789 15
7 14647 16789 3
的感謝!
你在考慮這個錯誤。 Awk是一個操縱文本的工具。它不是調用工具(包括其他awk實例)的環境 - 這就是shell的用途。 [編輯]你的問題描述你想對你的輸入做什麼來創建你的輸出(而不是**你認爲你需要做什麼),所以我們可以幫助你。 –
我不明白'ar [$ 4,$ 1]'可以如何返回示例輸出最後一列的值。對於這個問題,我沒有看到輸入中的任何內容可能會產生'5'和'15'的值。所以,正如EdM所說,讓我們看看關於如何處理數據的一些規則。您幾乎可以肯定地在awk中實現您的所需結果,或者重構您的shell代碼以及它如何調用awk。 **請更新您的Q **。祝你好運。 – shellter
@shelter,'5'和'15'來自_file1_。 – agc