我是awk并且尝试编写可以合并2个文件的代码的新手。
File1
session=123;1,code=01,name=om
session=345;3,code=04,name=ra
File2
time=44,minute=22,sec=01,session=123;1,creation=89
time=34,minute=12,sec=023,session=523;1,creation=80
输出应为
time=44,minute=22,sec=01,session=123;1,creation=89,code=01,name=om
time=34,minute=12,sec=023,session=523;1,creation=80,,
我写了类似的东西:
BEGIN { FS = OFS = "," }
FNR == NR {
a[$2] = substr($0,index($0,$2));
next
}
{
if($4 in a)print $0","a[$2];
else print $0",,";
}
但这不会产生正确的输出。
请问我在哪里弄错了?
答案 0 :(得分:2)
index($0, $2)
不是在字段2之后获取所有内容的好方法。在file1
的第一行,$2
是"1"
,因此index($0, "1")
找到1
中的section=123
。
试试这个:
BEGIN { FS = OFS = "," }
FNR == NR {
session=$1;
$1 = "";
a[session] = $0;
next
}
{
if($4 in a)print $0","a[$4];
else print $0",,";
}