2014-09-29 106 views
0

I需要比較兩個文件的前兩列,如果結果相同,則需要將第一個文件的第二列打印到第一個文件中所有匹配的第二個文件的第二個文件中。比較兩列並打印第二個文件中的第二列

輸入:

cat sample.txt 
135,135-00 
135,135-13 
135,135-134 
235,120-23 
235,190-56 

cat dump_test.csv 
135,121,4,VA,date,date 
135,128,6,VA,date,date 
135,131,9,VA,date,date 
235,128,10,date,date 

輸出文件:

cat output.txt 
135,121,4,VA,date,date,135-00 
135,128,6,VA,date,date,135-00 
135,131,9,VA,date,date,135-00 
135,121,4,VA,date,date,135-13 
135,128,6,VA,date,date,135-13 
135,131,9,VA,date,date,135-13 
135,121,4,VA,date,date,135-134 
135,128,6,VA,date,date,135-134 
135,131,9,VA,date,date,135-134 
235,128,10,date,date,120-23 
235,128,10,date,date,190-56 
+0

簡單的兩經過Python程序。首先檢查匹配,seocond通過以產生所需的輸出。使用Python的string.split(行,「,」)。 – Yotam 2014-09-29 08:40:41

回答

2
$ awk -F, 'BEGIN{i=0}FNR==NR{first[i]=$0; i=i+1;}NR!=FNR{for(j=0;j<i;j++){split(first[j],line); if(line[1]==$1) print $0,line[2]}}' sample.txt dump_test.csv 

135,121,4,VA,date,date 135-00 
135,121,4,VA,date,date 135-13 
135,121,4,VA,date,date 135-134 
135,128,6,VA,date,date 135-00 
135,128,6,VA,date,date 135-13 
135,128,6,VA,date,date 135-134 
135,131,9,VA,date,date 135-00 
135,131,9,VA,date,date 135-13 
135,131,9,VA,date,date 135-134 
235,128,10,date,date 120-23 
235,128,10,date,date 190-56 

它能做什麼?

總之

在第二文件dumb_test每行創建從在所述第一文件中的每一行的陣列firstsample.txt

它檢查如果第一字段是在第一,如果是附加第二式柱首先與行和打印。

FNR==NR確保了下面的命令僅適用於所述第一文件,sample.txt

first是一個數組,這節省了各行內文件中的一個,sample.txt並且使用被索引i

first[i]=$0將整行復制到陣列中,然後遞增索引i

NR!=FNR確保了下面的命令excecuted爲第二文件dumb_test.csv

for遍歷陣列first,即在所述第一文件中的行。

split(first[j],line)first[i]到陣列line

例如當first[0] = 135,135-00

split(first[0], line)使得line[1] = 135line[2] = 135-00 這裏line[1]是列酮和line[2]是第一文件的兩個柱

的如果檢查line[1] == $1這是文件一sample.txt中的第一列等於第一列在第二文件dumb_test.csv

若有打印在第二文件中的整行,$0 appeded與第一文件的第二式柱,線[2]

print $0,line[2]

+0

請解釋這 – Marjer 2014-09-29 10:35:58

+0

@Marjer編輯。希望能幫助到你 – nu11p01n73R 2014-09-29 10:51:19

2

是這樣行嗎你?

join -t',' test sample 

輸出:

135,121,4,VA,date,date,135-00 
135,121,4,VA,date,date,135-13 
135,121,4,VA,date,date,135-134 
135,128,6,VA,date,date,135-00 
135,128,6,VA,date,date,135-13 
135,128,6,VA,date,date,135-134 
135,131,9,VA,date,date,135-00 
135,131,9,VA,date,date,135-13 
135,131,9,VA,date,date,135-134 
235,128,10,date,date,120-23 
235,128,10,date,date,190-56 
相關問題