如果在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”数据之前添加虚拟分隔符文本以将它们分开。但是我无法实现它。
答案 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
- 删除模式空间的第一部分