awk |无法合并2个文件

时间:2013-11-25 04:38:48

标签: awk gawk

我是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",,";
}

但这不会产生正确的输出。

请问我在哪里弄错了?

1 个答案:

答案 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",,";
}