awk |无法合并2个文件
我是awk新手,正在尝试编写可以合并2个文件的代码 文件1awk |无法合并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
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:^表达式中的字符“”无效