Removendo “palavra” específica do arquivo de texto

1

Eu tenho o arquivo .srt com legendas. No entanto, minha TV não reconhece sinais como <i> </i> , por isso ela é impressa apenas na tela. Estou procurando uma maneira de excluir todas as marcações html.

    
por WiiTold 29.08.2015 / 14:42

3 respostas

1

Os arquivos .srt são arquivos .txt com uma extensão .srt, para que você possa abrir um arquivo .srt no Gedit Text Editor e excluir facilmente uma string de texto como <i> ou </i> usando Pesquisar - > Substituir (que abre uma nova janela Substituir ) - > Substituir Tudo .

Você também pode substituir cadeias de texto no aplicativo Gnome Subtitiles, no entanto Pesquisar - > Substituir no Gnome Subtitles não reconhece tags HTML incorporadas. Em vez disso, o Gnome Subtitles funciona como um processador de texto e permite que você formate texto em itálico sem mostrar suas tags HTML.

    
por karel 29.08.2015 / 17:42
0

Via sed

mas isso é apenas bom o suficiente para simplista HTML. . Para uma melhor solução via perl ou html2text , veja abaixo.

sed -i".$(date +'%s').bak" 's/<[^>]*>//g' your_input_file

Explicação

  • -i".$(date +'%s').bak"

    edite os arquivos no lugar (faz backup se o SUFFIX for fornecido)

  • 's/<[^>]*>//g'

    • < corresponde aos caracteres < literalmente
    • [^>]* corresponde a um único caractere não presente na lista abaixo
      • Quantificador: * Entre zero e ilimitado, tantas vezes quanto possível, devolvendo conforme necessário [ganancioso]
      • > um único caractere na lista > literalmente (diferencia maiúsculas de minúsculas)
    • > corresponde aos caracteres > literalmente
    • g modificador: global. Todas as partidas (não retornam no primeiro jogo)
    • s modificador: linha única. Ponto corresponde a caracteres de nova linha

Exemplo

  • O arquivo de entrada 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>
    
  • O comando e o novo conteúdo do arquivo 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,
    

Usando o Perl

  1. Instale uma biblioteca

    sudo apt-get install libfile-slurp-unicode-perl
    
  2. Crie um arquivo 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
    
  3. Use seu arquivo srt como parâmetro

    dos2unix foo.srt; ./removeTags foo.srt | unix2dos > foo_out.srt
    

Usando html2text

dos2unix foo.srt; perl -pe 's/\n/<br>/g' foo.srt | html2text | unix2dos > foo_out.srt
    
por A.B. 29.08.2015 / 16:50
0

Você pode usar o Vim no modo Ex:

ex -sc '%s/<[^>]*>//g|x' file.srt
  1. % seleciona todas as linhas

  2. s substituto

  3. g substitua todas as ocorrências em cada linha

  4. x salvar e fechar

por Steven Penny 16.04.2016 / 21:51