2014-09-29 103 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 
相关问题