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请确认这一点。