Это можно сделать следующим образом:
perl -lF';\n?' -00ne '$,=";"; print @F' yourfile
timestamp=201706291035.....;line 2;line 3;line 4;line 5;line 6;line 7
timestamp=201706291038.....;line 2;line 3;line 4;line 5;line 6
Опции Perl
a)-l
=> ORS="\n" + RS = "\n"
b)-F';\n?'
=> сделает FS точкой с запятой, за которой следует необязательный перевод строки.
c)-00
=> сделает RS=, тем самым включив режим абзаца.
d)-n
=> включит неявное чтение файла -в + явная печать.
Main:$,=;
сделает OFS точкой с запятой, @F
— это поля, которые были вырезаны из текущей записи $_
на основе FS
.
Так работает:
A="a'b"
B="${A//\'/\\\'}"
Два примечания:
[]
не нужны, если внутри них находится только один символ \
и '
внутри подстановки.