我有兩個文件,一個數據文件和一個查找文件。所述數據文件的Shell腳本 - 在第二個文件中使用lookup進行智能替換
一個場必須由一個值,它可以在查找文件中找到被改變。
的數據文件看起來像:
2013-04-24;1;0.1635;1.4135
2013-04-24;1;0.9135;1.4135
2013-04-24;2;0.9135;1.4135
查找文件看起來像:
1;2ab1e4c0-de4d-11e2-a934-0f0479162b1b
2;2ab21e90-de4d-11e2-9ce8-d368d9512bad
3;2ab2582e-de4d-11e2-bb5f-6b1f6c4437f8
的結果必然是:
2013-04-24 2ab1e4c0-de4d-11e2-a934-0f0479162b1b 0.1635 1.4135
2013-04-24 2ab1e4c0-de4d-11e2-a934-0f0479162b1b 0.9135 1.4135
2013-04-24 2ab21e90-de4d-11e2-9ce8-d368d9512bad 0.9135 1.4135
我知道如何使用awk來讀取數據文件並轉換字段分隔符。
awk 'BEGIN { FS = ";"; OFS = " " } ;
{ print $1, $2, #3, $4 }' $1 > $1.updated
但我不知道一個聰明的方法來在shell腳本的查找文件中查找變量$ 2,並用UUID替換原始值。
查找文件將永遠不會很大,在極端情況下最多會有1000條記錄。
在bash或perl中的任何解決方案也將不勝感激。
只是供參考,你的結果是不正確的。您的數據文件具有'2'作爲第三行,由查找文件中的'3'值替換。 –
你說得對。我編輯過,不會讓更多的讀者感到困惑。 – j3pinter