我正在尋求幫助,以unix級別連接兩個檔案(file1和file2),
也就是說,如果檔案2中存在tmpValue的值,就應該用它代替檔案1中的srcValue,如果檔案2中沒有tmpValue,就用檔案1中tmpValue的src值。
注意:查詢必須基于2個關鍵列:ID和DEPT。
示例
file1
------
id^dept^name^srcValue
1^d1^a^s123
2^d2^b^s456
3^d3^c^
file2
--------
id^dept^name
1^d1^Tva
3^d3^TVb
4^d4^Tvm
希望的輸出
---------------------
id^dept^name^FinalValue
1^d1^a^Tva
2^d2^b^s456
3^d3^c^TVb
下面的示例代碼在我只考慮1個列作為關鍵列(id)的情況下運行良好,但我不確定如何將id和dept同時作為關鍵列。
awk -F"^" 'BEGIN{OFS="^"}
{
如果(NR==FNR) {
a[$1]=$3;
下一個
}
如果(1美元在a中){
$4=a[$1]
}
列印
}' file2 file1
相同的(上述)代碼的輸出
id^dept^name^name
1^d1^a^Tva
2^d2^b^s456
3^d3^c^TVb
uj5u.com熱心網友回復:
我不確定如何將id和dept同時作為關鍵列來提及。
存盤這兩個。
a[$1, $2] =$3;
然后比較兩者。
if (($1, $2) in a) {
逗號只是使用OFS"合并 "值。所以$1, $2基本上等于$1 OFS $2 - 它是一個字串,中間有^。例如,你可以print ($1, $2)來檢查它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/318124.html
標籤:
上一篇:每一行的第一個字母要大寫
