比较awk中的两列,并将查找文件中的值打印到输出文件中

时间:2016-01-12 11:12:15

标签: shell unix awk

我有两个文件,第一个文件有~16000个文件,第二个文件是查找文件,有~4000行。

file1的示例内容如下:

id,title,name,value,details
01,23456,   ,   ,abcdefg
02,23456,   ,   ,abcdefg
03,12345,   ,   ,abcdefg
04,34534,   ,   ,abcdefg
...

查找文件file2的示例内容如下:

sno,title,name,value
1,23456,abc,xyz
2,12345,cde,efg
3,34534,543,234

现在我的要求是比较查找文件中file1的第2列,并将查询文件中column3和column4的值插入到新的输出文件中。

输出文件应如下所示:

id,title,name,value,details
01,23456,abc,xyz,abcdefg
02,23456,abc,xyz,abcdefg
03,12345,cde,efg,abcdefg
04,34534,543,234,abcdefg

我通过查看现有问题尝试了几次迭代,但没有得到我想要的结果。使用awk的任何解决方案都会非常有用。

3 个答案:

答案 0 :(得分:4)

function myFunction() {
    var table = document.getElementById("myTable");
    var row = table.insertRow(0);
    var cell1 = row.insertCell(0);
    var cell2 = row.insertCell(1);
    var cell3 = row.insertCell(2);
    var cell4 = row.insertCell(3);
    var cell5 = row.insertCell(4);
    cell1.innerHTML = '<input type="text" name="naamoptie2[0]" class="simple_field" placeholder="Naam van optie/onderdeel" required style="padding: 10px 10px;" />';
    cell2.innerHTML = '€ <input type="number" name="prijsticket[0]" class="simple_field" placeholder="100" required  style="padding-top: 5px; padding-bottom: 5px; min-height: 30px;"  step="any" />';
    cell3.innerHTML = '<input type="number" name="aantaltickets2[0]" class="simple_field" required style="padding-top: 5px; padding-bottom: 5px; min-height: 30px;" placeholder="aantaltickets"  />';
    cell4.innerHTML = '<input type="text" name="onderdeelnummer[0]" class="simple_field"  required style="padding: 10px 10px; margin-top: 10px;" placeholder="Onderdeelnummer"  />';
    cell5.innerHTML = '<input type="text" name="categorienummer[0]" class="simple_field"  required style="padding: 10px 10px; margin-top: 10px;"  placeholder="Categorienummer" />';
}

答案 1 :(得分:3)

这是一个awk oneliner:

awk -F, 'FNR==NR {n[$2]=$3;v[$2]=$4} FNR!=NR{OFS=","; print $1,$2,n[$2],v[$2],$5}' file2 file1

我们的想法是两次处理,首先是file2存储所有的名称和值,然后是file1,打印出每一行,包括收集的名称和值。

答案 2 :(得分:1)

awk -F"," 'BEGIN{OFS=","} NR==FNR {a[$2]=$3","$4;next} {print $1,$2,a[$2],$5;}' file2 file1