Удаление конкретного «слова» из текстового файла

У меня есть файл .srt с субтитрами. Однако мой телевизор не распознает такие знаки, как <i> </i>, поэтому он просто печатается на экране. Я ищу способ удалить всю HTML-разметку.

1
задан 29 August 2015 в 16:42

3 ответа

. файлы srt являются .txt файлами с .srt расширением, таким образом, можно открыть .srt файл в Текстовом редакторе Gedit и и легко удалить текстовую строку как <i> или </i> использование Поиск -> Замена (который открывает новое окно Replace )-> Замена Весь .

можно также заменить текстовые строки в Gnome приложение Subtitiles, однако Поиск -> , Замена в Подзаголовках Gnome не распознает встроенные HTML-тэги. Вместо этого Подзаголовки Gnome функционируют как текстовой процессор и позволяют Вам тексту формата курсивом, не показывая его HTML-тэги.

0
ответ дан 30 August 2015 в 02:42
  • 1
    md5sum был в порядке. Ссылка, которую Вы отправили, для Незашифрованного диска. Действительно ли это на самом деле рекомендуемо для шифрования диска более старого ноутбука, который я хочу использовать только дома? – Chrizl105 20 November 2016 в 07:27

Через 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,
    

Использование Perl

  1. Установите библиотеку

    sudo apt-get install libfile-slurp-unicode-perl
    
  2. Создайте файл жемчуга 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
    
  3. Используйте Ваш 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
0
ответ дан 30 August 2015 в 02:42
  • 1
    Извините, я просто понял, что Вы записали Незашифрованный ДОМОЙ. Я пытаюсь установить его с инструкциями тогда! – Chrizl105 20 November 2016 в 07:45

Можно использовать Vim в режиме Ex:

ex -sc '%s/<[^>]*>//g|x' file.srt
  1. % выбор все строки

  2. s замена

  3. g замена все экземпляры в каждой строке

  4. x сохраняют и закрываются

0
ответ дан 30 August 2015 в 02:42
  • 1
    Q: Действительно ли это на самом деле рекомендуемо для шифрования диска более старого ноутбука, который я хочу использовать только дома? A: Нет, но возможный. Резервное копирование намного более важно. – sudodus 20 November 2016 в 08:00

Другие вопросы по тегам:

Похожие вопросы: