Sed 基于列匹配的数据合并
我有一个如下的记录(输入)。有Sed 基于列匹配的数据合并,sed,awk,Sed,Awk,我有一个如下的记录(输入)。有8个字段,每个字段由选项卡空间分隔。根据上述记录,我需要根据1,2,4,5列匹配生成一个新文件,如下所示 输入文件: -10 68120047 . X Y . Pass A=0.0257732 -10 68120047 . X Y . Pass B=0.0263158 -10 68120047 . X Y . Pass C=0.0280899 输出 -10 68120047
8个字段,每个字段由选项卡空间
分隔。根据上述记录,我需要根据1,2,4,5
列匹配生成一个新文件,如下所示
输入文件:
-10 68120047 . X Y . Pass A=0.0257732
-10 68120047 . X Y . Pass B=0.0263158
-10 68120047 . X Y . Pass C=0.0280899
输出
-10 68120047 . X Y . Pass A=0.0257732;B=0.0263158;C=0.0280899
您的示例1,2,4,5
不匹配!。您有y
和y
尝试使用$1和$2
作为键的一行程序。您也可以添加到$1$2$4$5
awk '{r=$NF;k=$1$2;a[k]=a[k]?a[k]";"r:$0}END{for(x in a)print a[x]}' file
将您的内容保存在文件中:
kent$ awk '{r=$NF;k=$1$2;a[k]=a[k]?a[k]";"r:$0}END{for(x in a)print a[x]}' file
-10 68120047 . X Y . Pass A=0.0257732;B=0.0263158;C=0.0280899
及。。。。。您尝试过什么???根据您的描述(8个字段按选项卡…基于1,2,4,5列…
),输入文件中不应出现行1,2,3:
。我删除了。正在工作,但B、C字段正在更新line@sudo_O是的。行x:
不应在输入中。一开始我写了比这更复杂的一行。然而,当我读了两遍他的问题后,我发现了它。请看我在问题下的评论。@AbhinRaj我看不到它发生在这里。或者您有一个不同的输入文件?@AbhinRaj正如我所说,您的示例在第5列中有y
和y
。如果您只是将$4$5
添加到我的k
变量中,它们是不同的。你们在一个新行中得到了B,C,带有小的y
。这似乎是一个合理的假设@AbhinRaj请确认这一点。