2013-05-31 86 views
0

我有一条记录如下(输入)。有8字段,每个字段之间用tab space分隔。从上面的记录我需要基于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 
+0

和.....你尝试过什么??? – abasu

+0

从你的描述('8字段sep by tab ... based on 1,2,4,5 column ...)','Line 1,2,3:'不应该在输入文件中。我删除了。 – Kent

回答

1

你的榜样1,2,4,5不匹配!你有yY

试试这个一行与$1 and $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 
+0

工作但B,C领域进入新行 – Kraj

+0

这似乎没有给出预期的结果? http://ideone.com/tI8wii –

+0

@sudo_O是的,它的确如此。 'Line x:'不应该在输入中。起初我写了比这更复杂的一行。然而,当我两次阅读他的问题后,我发现了它。在这个问题下看到我的评论。 – Kent