Como substituir as tags html pelo comando SED?

0

Estou tentando substituir a tag abaixo pelo novo conteúdo junto com a tag line. Existe uma maneira de alterar a tag junto com seus valores usando sed ou qualquer outra opção que tenhamos para fazer isso?

Tag html original (dentro da tag th> ):

th> file-109 /th>
th> file-209 /th>

Altere esta tag html para:

th>S.No  Name /th>
th>S.No  Name /th>

Eu tentei o abaixo, mas isso não funciona. Seu erro de lançamento.

sed "s/th>file-1.*/'th>'head -5 file-109 | tail -1'/th>'/g" Diff.html
sed "s/th>file-2.*/'th>'head -5 file-209 | tail -1'/th>'/g" Diff.html
    
por Sandosh Kumar P 08.03.2017 / 17:32

3 respostas

3

Sed pode usar muitos caracteres diferentes como separadores; você escolheu /, mas / também está presente na string que você deseja substituir. Portanto, eu escolheria:

sed 's:th>file-[0-9]+ /th>:th>S.No name /th>:g' yourfile

Por favor note, no entanto, que se você quiser processar algo mais complexo do que isso, você deve analisar HTML - e não usar regex.

    
por 08.03.2017 / 17:52
0

Realmente não sei o quão robusto ele precisa ser, mas tente sed -e "s/file-[^/ ]*/S.No Name/g" Diff.html e para editar o arquivo use diretamente sed -ie

    
por 08.03.2017 / 17:50
0
perl -0777pe '
   s{ (?<=th>\s) file-\d+ (?=\s/th>) }{
      qx/sed -e "4q;d" "$&"/ =~ /.*/;
      $&;
   }xge;
' Diff.html

Se eu entendi corretamente, você quer todos os nomes de arquivos do tipo File-num entre os caracteres > e / th > tags em um arquivo a ser substituído pela quarta linha do arquivo selecionado.

    
por 08.03.2017 / 18:50