我正在尋求幫助,以連接(在UNIX級別)兩個檔案(file1和file2),從file1中挑選數值,優先于file2中的數值。 如果檔案1中存在srcvalue,就應該取而代之檔案2的tmpValue。如果檔案1中沒有srcValue,那么就從檔案2的tmpValue中獲取這個值。
示例資料:
file1:
id name srcValue
1 a s123
2 b s456
3 c
file2:
id tmpValue
1 Tva
3 TVb
4 Tvm
期望的輸出:
ID Name FinalValue
1 a s123
2 b s456
3 c TVb
uj5u.com熱心網友回復:
我會用awk腳本來處理這個問題;它是相當強大和靈活的。 這里的一般方法是先從檔案2加載數值,然后回圈瀏覽檔案1并根據需要進行替換。
awk 'BEGIN { print "ID Name FinalValue" }
FNR == NR && FNR > 1 { tmpValue[1]=$2; }
FNR != NR && FNR > 1 { 如果(NF == 2) {
列印 $1, $2, tmpValue[$1] 。
} 否則 {
列印 1, 2, 3
}
}
' file2 file1
BEGIN塊在讀取任何檔案之前被執行,它唯一的作業是輸出新的標題。
FNR == NR && FNR > 1條件對于第一個檔案名(這里是 "file2")來說是真的,并且也跳過了該檔案的第一行(FNR > 1),因為它是一個頭行。該條件的 "動作 "塊只是用file2的id和tmpValue填入一個關聯陣列。
FNR != NR && FNR > 1對應于第二個檔案名(這里是 "file1"),同時跳過第一行(標題)。在這段代碼中,我們檢查是否有srcValue;如果有,就把這三個值列印出來;如果沒有,就把保存的值替換進去(假設有的話;否則,就是空白)。
我假設問題中的<br>位是格式化的嘗試,如果file1中沒有值,那么第3列實際上是空的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/318321.html
標籤:
上一篇:如何使用sed在shell腳本中獲得JSON中的第一個"id"?
下一篇:回圈瀏覽包含段落標簽的div標簽
