2015-02-01 4 views
0

Как слить две строки, если они соответствуют определенным критериям в терминале Unix?Условно Объединение двух строк в одну строку

У меня есть данные, как:

A1 
B1 
A2 
B2 
A3 
A4 
A5 
B5 

И я хочу объединить нравится, что:

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

Real данных выглядит следующим образом:

"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" 

Я на самом деле пытался добавьте фиктивные тексты-разделители перед данными «А», чтобы их разделить. Но я не мог этого добиться.

ответ

1

Использование sed

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

Объяснение:

  • s/$/, / - Append запятой к текущей строке
  • N - получить следующую строку
  • /\n<Freq/{s/\n//} - Если вторая строка содержит <Freq, удалить строку
  • P - Печать первой части шаблона
  • D - Удалить первую часть шаблона
1

Это может быть сделано с помощью awk getline:
awk '{ if(condition){ if((getline var)>0) print $0","$var; else print $0; } else print $0;}' <file>