сохранить одну строку в файле srt, удалив символы ctrl-m и двойную пустую строку - PullRequest
0 голосов
/ 03 мая 2018

мы обрабатываем много файлов srt в linux для генерации производных, но некоторые из них имеют ctrl - M символов, так как они были сгенерированы в windows. сейчас я ставлю две команды для проверки и удаления скрытых символов

tr -d '\015' <${file}.srt >${file}.srt

awk '/^$/{ if (! blank++) print; next } { blank=0; print }'  ${file}.srt | tee ${file}.srt

но у меня все еще есть файлы srt, которые проскальзывают через команду и в ней все еще есть символ ctrl - M . У кого-нибудь есть решение в этом случае оставить пустую строку только между тонкими линиями? так что если предварительно обработанный файл srt выглядит как

1
00:00:05,569 --> 00:00:07,569
Welcome to this overview of ShareStream, 


2
00:00:07,820 --> 00:00:11,940
which is a new digital streaming service
from Information Technology Services


3
00:00:11,940 --> 00:00:13,740
at the University of Iowa.

после удаления символа ctrl-M или дополнительной строки должно быть

1
00:00:05,569 --> 00:00:07,569
Welcome to this overview of ShareStream, 

2
00:00:07,820 --> 00:00:11,940
which is a new digital streaming service
from Information Technology Services

3
00:00:11,940 --> 00:00:13,740
at the University of Iowa.

любая помощь приветствуется, спасибо!

1 Ответ

0 голосов
/ 03 мая 2018

Команда UNIX для удаления этих строк-control-Ms:

dos2unix

Команда UNIX для сжатия нескольких пустых строк между записями в одну пустую строку:

awk -v RS= -v ORS='\n\n' '1'
...