Замена в VIM (при условии, что стандартные EDIFACT сепараторы/управляющие символы для набора символов ЮНОА используются):
:s/\([^?]'\)\(.\)/\1\r\2/g
Ломая регулярное выражение:
\([^?]'\)
- поиск '
, которое происходит после любого символа, кроме ?
(стандартный escape-символ) и захватить эти два символа в качестве первого атома. Это два последних символа каждого сегмента.
\(.\)
- Захват любого символа, следующий терминатор сегмента (т. Е не совпадает, если терминатор сегмента уже в конце строки)
Затем замените все матчи на этой линии с новой линией между сегментом терминатора и начала следующего сегмента.
В противном случае вы могли бы в конечном итоге с этим:
...
FTX+AAR+++FORWARDING?: Freight under Vendor?'
s care.'
NAD+BY+9312345123452'
CTA+PD+0001:Terence Trent D?'
Arby'
...
вместо этого:
...
FTX+AAR+++FORWARDING?: Freight under Vendor?'s care .'
NAD+BY+9312345123452'
CTA+PD+0001:Terence Trent D?'Arby'
...
В какое приложение вы бы написать макрос? –