我想根據fileB中的單個字段與fileA中的任意四個字段之間的模式匹配來更新fileA中fileA中的數據(儘管匹配將是數組的第一個元素在fileA中的這些字段中)。陣列中的模式匹配
fileA將如下所示。 $ 3 $ $ 4 $ 5圖6是我在哪裏尋找匹配的字段,並且這些可以是「NM」或由一個分開的三個元件的陣列「:」
H01 x001 NM NM NM NM
H01 f005 NM s10|001:60:50 NM s10|001:500:709
H06 x989 NM NM NM s560|999:70:500
H79 r679 s560|999:1000:1100 NM NM NM
FILEB會是什麼樣子的下方。
POI05 A s50|088 85.77
POI15 A s10|001 65.09
POI45 B s8970|0753 85.37
POI55 B s900|08 8.77
POI75 C s560|999 55.82
POI81 C s33|0008 5.88
匹配將會在$ 3的fileB和$ 3 ||數組的第一個元素之間$ 4 || $ 5 || fileA的6美元,輸出將如下所示。基本上,fileA有一個新的字段$ 7,當匹配時是fileB,$ 1:$ 2:$ 4,沒有匹配時是「NM」。
H01 x001 NM NM NM NM NM
H01 f005 NM s10|001:60:50 NM s10|001:500:709 POI15:A:65.09
H06 x989 NM NM NM s560|999:70:500 POI75:C:55.82
H79 r679 s560|999:1000:1100 NM NM NM POI75:C:55.82
如上例所示,fileA中fileB $ 2可以有多個匹配項。
我一直在努力做的事情:
我昨天得到幫助的相關問題,但它缺乏(一)比賽是一個數組中,和(B)的匹配被包含在任何的複雜性四個領域。
awk 'NR==FNR{a[$3]=$1":"$2":"$4;next}{$7=(a[$2])?a[$2]:"NM"}1'
我需要拆分爲$ 3 $ $ 4 5的fileA的$ 6陣列和提取的每個
split($3, arr, ":") $3[1]
和你有什麼試過沒?那它怎麼沒用? –
@ZsoltBotykai我編輯了這個問題,包括我一直試圖縫合在一起的棋子 – user1308144