У меня есть файл .srt
с субтитрами. Однако мой телевизор не распознает такие знаки, как <i> </i>
, поэтому он просто печатается на экране. Я ищу способ удалить всю HTML-разметку.
. файлы srt являются .txt файлами с .srt расширением, таким образом, можно открыть .srt файл в Текстовом редакторе Gedit и и легко удалить текстовую строку как <i>
или </i>
использование Поиск -> Замена (который открывает новое окно Replace )-> Замена Весь .
можно также заменить текстовые строки в Gnome приложение Subtitiles, однако Поиск -> , Замена в Подзаголовках Gnome не распознает встроенные HTML-тэги. Вместо этого Подзаголовки Gnome функционируют как текстовой процессор и позволяют Вам тексту формата курсивом, не показывая его HTML-тэги.
sed
но это только достаточно хорошо для упрощенного HTML.. Для лучшего решения через perl
или html2text
, посмотрите ниже.
sed -i".$(date +'%s').bak" 's/<[^>]*>//g' your_input_file
Объяснение
-i".$(date +'%s').bak"
файлы редактирования на месте (делает резервное копирование, если СУФФИКС предоставил),
's/<[^>]*>//g'
<
соответствует символам <
буквально[^>]*
соответствуйте отдельному символу, не существующему в списке ниже *
Между нулевыми и неограниченными временами, максимально много раз, отдавая по мере необходимости [жадный]>
отдельный символ в списке >
буквально (чувствительный к регистру)>
соответствует символам >
буквальноg
модификатор: глобальный. Все соответствия (не возвращаются на первом соответствии),s
модификатор: одна строка. Точка соответствует символам новой строкиПример
Входной файл foo
% cat foo
2
00:00:22,000 --> 00:00:28,074
Advertise your product or brand here
contact www.OpenSubtitles.org today
3
00:00:36,036 --> 00:00:39,096
<i>When I was a child in India,</i>
4
00:00:39,205 --> 00:00:43,005
<i>growing up in the tiny village
of Harenmahkeester,</i>
5
00:00:45,145 --> 00:00:47,238
<i>I found a voice-over machine,</i>
Команда и новое содержание файла foo
% sed -i".$(date +'%s').bak" 's/<[^>]*>//g' foo
% cat foo
2
00:00:22,000 --> 00:00:28,074
Advertise your product or brand here
contact www.OpenSubtitles.org today
3
00:00:36,036 --> 00:00:39,096
When I was a child in India,
4
00:00:39,205 --> 00:00:43,005
growing up in the tiny village
of Harenmahkeester,
5
00:00:45,145 --> 00:00:47,238
I found a voice-over machine,
Установите библиотеку
sudo apt-get install libfile-slurp-unicode-perl
Создайте файл жемчуга removeTags
#!/usr/bin/perl
use HTML::Parse;
use HTML::FormatText;
use File::Slurp;
my $text = read_file($ARGV[0]);
$text =~ s/\n/<br>/g;
$plain_text = HTML::FormatText->new->format(parse_html($text));
print $plain_text
Используйте Ваш srt
файл как параметр
dos2unix foo.srt; ./removeTags foo.srt | unix2dos > foo_out.srt
html2text
dos2unix foo.srt; perl -pe 's/\n/<br>/g' foo.srt | html2text | unix2dos > foo_out.srt
Можно использовать Vim в режиме Ex:
ex -sc '%s/<[^>]*>//g|x' file.srt
%
выбор все строки
s
замена
g
замена все экземпляры в каждой строке
x
сохраняют и закрываются