有条件地将两条线合并为一条线

时间:2015-02-01 06:06:52

标签: unix merge bioinformatics

如果在Unix终端中符合特定条件,我如何合并两行?

我有以下数据:

A1
B1
A2
B2
A3
A4
A5
B5

我希望合并到那样:

A1, B1
A2, B2
A3,
A4,
A5, B5

真实数据如下所示:

"224222" 
<Frequency freq="0.136" allele="T" sampleSize="5008"/>
"224223" 
<Frequency freq="0.3864" allele="T" sampleSize="5008"/>
"224224" 
"224225" 
<Frequency freq="0.3894" allele="G" sampleSize="5008"/>
"1801179" 
"1861759"

我实际上试图在“A”数据之前添加虚拟分隔符文本以将它们分开。但是我无法实现它。

2 个答案:

答案 0 :(得分:1)

可以使用awk getline完成:
awk '{ if(condition){ if((getline var)>0) print $0","$var; else print $0; } else print $0;}' <file>

答案 1 :(得分:1)

使用sed

sed 's/$/, /;N;/\n<Freq/{s/\n//};P;D' <file>

说明:

  • s/$/, / - 在当前行中附加逗号
  • N - 获取下一行
  • /\n<Freq/{s/\n//} - 如果第二行包含<Freq,请删除换行符
  • P - 打印模式空间的第一部分
  • D - 删除模式空间的第一部分