awk |无法合并2个文件

awk |无法合并2个文件,awk,gawk,Awk,Gawk,我是awk新手,正在尝试编写可以合并2个文件的代码 文件1 session=123;1,code=01,name=om session=345;3,code=04,name=ra 文件2 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,crea

我是awk新手,正在尝试编写可以合并2个文件的代码

文件1

session=123;1,code=01,name=om  
session=345;3,code=04,name=ra
文件2

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)
不是获取字段2之后所有内容的好方法。在
文件1
的第一行中,
$2
“1”
,因此
索引($0,“1”)
部分=123
中查找
1

试试这个:

BEGIN { FS = OFS = "," }
FNR == NR {
  session=$1;
  $1 = "";
  a[session] = $0;
  next
}
{
  if($4 in a)print $0","a[$4];
  else print $0",,";
}

为什么
file1
行的其余部分不包括在预期输出中?在
文件1
中的同一行上是否真的应该有多个
会话
值?因为文件2是基本文件。。如果文件1中有额外内容,则可以忽略。。但是我需要文件2中的所有内容。我的问题是因为在您编辑之前,
file1
的格式不正确。啊哈。。是的我也编辑过谢谢谢谢谢谢。。但为什么substr($0,index($0,$2))不起作用。。在本例中,我只有3和4个字段。。可以有n个字段。。那么substr更好。。正确的?或者请建议您的视图我仍然没有得到合并输出awk-f field_merge_2_1.awk file1.log file2.log time=44,min=22,sec=01,session=123;1,创建=89,时间=34,分钟=12,秒=023,会话=523;1,creation=80,当
$22
1
时,
索引($0,$2)
是行中第一个
1
的位置,而不是字段3的位置。您在
文件1
中引用了错误的字段,您应该用作数组索引的字段是
$1
。我已经更新了答案,将字段1之后的所有内容都存储到数组中。我不知道,但我发现语法错误。。此版本是否与awk一起出现问题?awk-f field_merge_2_1.awk file1.log file2.log awk:field_merge_2_1.awk:4:$1='';awk:字段\u合并\u 2\u 1。awk:4:^表达式中的字符“”无效