Como posso excluir seções de arquivos HTML em um lote de mais de 700 arquivos?

1

Primeiro:
Estou usando o último OSX e posso editar os arquivos HTML com CotEditor e KompoZer. No entanto, não sou experiente em editores de HTML em geral: /
Se eu tiver que - porque uma de suas respostas é super simples e conveniente assim - eu poderia mudar para uma máquina Win7 para esta tarefa.

O problema:
Eu tenho um pouco mais de 700 arquivos HTML disponíveis que compartilham a mesma estrutura básica, eles são organizados em muitas tabelas e eu preciso excluir certos conteúdos de todos eles, que consistem sempre nas mesmas linhas com títulos e abaixo das colunas com alteração conteúdo. - Se eu pudesse especificar algo como "excluir toda a coluna que contém, por exemplo," Nome "na célula superior", isso seria suficiente. Além disso, eu preciso excluir partes recorrentes (que em teoria podem ser encontradas e substituídas para todos os arquivos ... mas, bem, em lote de alguma forma)

Você pode me ajudar? O KompoZer fará o lote-truque ou você tem outra recomendação? Obrigado :)

----- EDITAR -----
Eu tentei o TextWrangler para encontrar o & substituir recursos, e funciona muito bem com a descoberta de código recorrente em muitos arquivos, então eu sei como vou obter exatamente os mesmos bits de cada arquivo. Isso me deixa com o conteúdo alterado.

Existe uma maneira de encontrar conteúdo entre dois pontos recorrentes? Por exemplo, se eu soubesse de algo antes e depois, o conteúdo que desejo excluir é sempre o mesmo:

<tag> txt_a Content1_to_delete txt_b </tag>
<tag> txt_a Content2_to_delete txt_b </tag>
<tag> txt_a Content3_to_delete txt_b </tag>

então eu preciso de encontrar & substituir entre <tag> txt_a e txt_b </tag> ou até mesmo encontrar & substitua a partir de <tag> txt_a até e incluindo txt_b </tag>

esta é a parte problemática para mim, onde eu realmente preciso de ajuda
----- EDIT2 -----
Após a resposta de Gombai Sándor em combinação com o comentário de Dooley_labs, obtive algumas ideias e, embora a variante sed funcione no terminal, escolhi o TextWrangler para fazer o trabalho.
TextWrangler pode fazer Encontrar & Substitua vários arquivos, mas também aceita expressões regulares por meio de uma opção "grep". Aprendi sobre expressões regulares e consegui resolver meu problema. O bit "mágico" para mim estava recebendo os curingas certos. Especialmente o simples .* . Para quem quiser mexer com expressões regulares, eu recomendo este site, que eu achei muito útil: regexr.com

    
por QuentinS 02.03.2016 / 14:53

1 resposta

0

Os IDE gerais mais comuns têm a função de (regexp) pesquisar e substituir em arquivos (dentro de uma estrutura de diretórios). Mesmo pequenos editores tendem a oferecer esse recurso; no Windows, o NotePad ++ é um bom exemplo.

Para o OSX, onde você tem as ferramentas comuns do shell, pode ser uma tarefa típica para o sed, que é um editor em si ... um editor muito especial.

Contanto que todos os arquivos estejam no mesmo diretório, permanecendo nesse diretório, você pode usar isto para deletar as partes desnecessárias e colocar a saída em arquivos terminados em .htm que (após alguma verificação) você pode renomear para .html .

$ cat just-an-html.html
<tag> txt_a Content1_to_delete txt_b </tag>
<tag> txt_a Content2_to_delete txt_b </tag>
<tag> txt_a Content3_to_delete txt_b </tag>
$ for HTML in *.html; do sed -e 's@\(tag> txt_a\) .*\(txt_b </tag\)@ @g' $HTML > $(basename $HTML html)htm ; done
$ ls *.htm
just-an-html.htm
$ cat just-an-html.htm
<tag> txt_a txt_b </tag>
<tag> txt_a txt_b </tag>
<tag> txt_a txt_b </tag>

Também é possível excluir a substring diretamente dentro dos arquivos (-i: inplace), mas eu não recomendaria isso, a menos que você tenha backups atualizados.

$ cat just-an-html.html
<tag> txt_a Content1_to_delete txt_b </tag>
<tag> txt_a Content2_to_delete txt_b </tag>
<tag> txt_a Content3_to_delete txt_b </tag>
$ for HTML in *.html; do sed -i -e 's@\(tag> txt_a\) .*\(txt_b </tag\)@ @g' $HTML  ; done
$ cat just-an-html.html
<tag> txt_a txt_b </tag>
<tag> txt_a txt_b </tag>
<tag> txt_a txt_b </tag>
    
por 02.03.2016 / 17:58