Добрый день! Пытаюсь переформатировать текст из субтитров.
Сначала из субтитров убрал строки начинающиеся на цифры:
cat 02-Dependencies.srt | grep -v "^[0-9]" > 02-Dependencies.txt
Получил вот что:
However, it must be compiled before asterisk in order for Asterisk to be able to use it.
The goal of this module is to describe
the basic process
of installing and verifying dependencies
. In the next module entitled
"Installing Asterisk from source" we will show
you how to actually install the
dependencies we've just described.
Далее форматирую текст так:
However, it must be compiled before asterisk in order for Asterisk to be able to use it.
The goal of this module is to describe the basic process of installing and verifying dependencies.
In the next module entitled "Installing Asterisk from source" we will show you how to actually install the dependencies we've just described.
Есть ли скрипты, которые так могут переформатировать текст?
В итоге получился вот такой скрипт:
#!/bin/bash
for i in *.srt; do
cat "$i"| grep -v "^[0-9]" | dos2unix | sed -e '/^$/d' | sed ':a;N;$!ba;s/\n/ /g' | tr -s [:blank:] ' ' | sed -e 's/\. /\.\n /g' | sed 's/^[ \t]*//' | sed G > "$i".txt;
done
Где
grep -v "^[0-9]" #убираем строки начинающиеся на цифры
dos2unix #убираем dos-кое окончание строк
sed -e '/^$/d' #удаляем пустые строки
sed ':a;N;$!ba;s/\n/ /g' #собираем все в одну строку
tr -s [:blank:] ' ' #Удаляем повторяющиеся пробельные символы
sed -e 's/\. /\.\n /g' #Заменяем точки на перевод строки с пробелами, чтобы каждое предложение было на отдельной строке
sed 's/^[ \t]*//' #Удаляем все пробелы и символы табуляции в начале каждой строки файла
sed 'G;G' #вставляем ДВЕ пустые строки после каждой строки