У меня есть файл, содержащий следующие данные:
;Citation1 begins here and contains characters including , . and numbers
DATA 1 259.85 101000 0.094837707 0.9089 /
2 266.07 101000 0.097842938 0.8997 /
3 270.95 101000 0.105071894 0.8899 /
4 273.35 101000 0.112016587 0.8849 /
5 278.75 101000 0.134569045 0.87 /
;Citation2 begins here and contains characters including , . and numbers but
;this one continues on the next line
DATA 1 259.85 101000 0.094837707 0.9089 /
2 266.07 101000 0.097842938 0.8997 /
3 270.95 101000 0.105071894 0.8899 /
4 273.35 101000 0.112016587 0.8849 /
5 278.75 101000 0.134569045 0.87 /
Я хотел бы, чтобы все строки были напечатаны в новом файле. Однако, когда последовательные строки начинаются с одного и того же символа (здесь ";"), я хотел бы объединить их в одну строку. Таким образом, приведенный выше входной файл будет выглядеть так:
;Citation1 begins here and contains characters including , . and numbers
DATA 1 259.85 101000 0.094837707 0.9089 /
2 266.07 101000 0.097842938 0.8997 /
3 270.95 101000 0.105071894 0.8899 /
4 273.35 101000 0.112016587 0.8849 /
5 278.75 101000 0.134569045 0.87 /
;Citation2 begins here and contains characters including , . and numbers but this one continues on the next line
DATA 1 259.85 101000 0.094837707 0.9089 /
2 266.07 101000 0.097842938 0.8997 /
3 270.95 101000 0.105071894 0.8899 /
4 273.35 101000 0.112016587 0.8849 /
5 278.75 101000 0.134569045 0.87 /
Я пробовал использовать различные варианты команд awk, например:
awk '/;/ && last {printf "%s","\n"last;$0}{printf "%s",$0}END{print} /;/{last=$0}' input.txt > output.txt
, но безуспешно.