我FileA
內容是:匹配條目文件
LetterA LetterM 12
LetterB LetterC 45
LetterB LetterG 23
FileB
內容是:
LetterA 23 43 LetterZ
LetterB 21 71 LetterC
我想寫原FileA
項加上FileB
如果
FileA $1 = FileB $1 && FileA $2 = FileB $4
進入$2-$3
。
對於這樣的輸出中:
LetterB LetterC 45 -50
我可以使用bash循環
while read ENTRY
do
COLUMN1=$(cut -f 1 $ENTRY)
COLUMN2=$(cut -f 2 $ENTRY)
awk -v COLUMN1="$COLUMN1" -v COLUMN2="COLUMN2" -v ENTRY="$ENTRY"
'($1==COLUMN1 && $4==COLUMN2)
{print ENTRY,$2-$3}' FileB
done < FileA
但是做到這一點,這個循環是太慢了。有沒有辦法做到這一點使用awk沒有循環?
獲取多個輸入文件 - >匹配其內容 - >打印想要的輸出。
謝謝,它的作品就像一個魅力!只是想問:爲什麼「1美元」:「在一個'4美元的作品,但是當我只嘗試'1美元',它不起作用? – PoGibas
我不知道這是否是一行代碼,但它是一個很好的小演示,演示了awk如何比通常理解的更強大。 –
@JohnZwinck:當我構建這個awk解決方案時,它是1個班輪,但是發佈時我爲了更好的可讀性打破了2條線:P – anubhava