formata um arquivo de texto para ter todo o texto em uma linha usando o CentOS 5.6

2

Eu tenho um bloco de 210 linhas de HTML que armazenei em um HTML para fins de depuração.

O HTML, como seria de esperar, é formatado em conformidade, sendo armazenado no arquivo com espaços e tabulações. É possível converter este arquivo para ter todo o HTML em uma linha? Eu estou no CentOS 5.6.

Por exemplo, existe uma maneira fácil de alterar isso:

<div id="crmpicco">
     <div class="ayrshireminis">
... content in here ...
     </div>
</div> 

para isso:

<div id="crmpicco"><div class="ayrshireminis"></div></div>
    
por crmpicco 17.08.2012 / 12:57

3 respostas

5

Você pode achar útil o utilitário tr . cat INPUT_FILE | tr -d '\n\r' > OUTPUT_FILE parece fazer o trabalho.

  • -d Excluir caracteres, em vez de traduzir

Veja man tr para mais detalhes sobre o que mais tr pode fazer. Espero que isso ajude.

    
por 17.08.2012 / 13:41
2

Existem muitas ferramentas que você pode usar para fazer isso. Aqui está uma solução em perl.

Na linha de comando:

perl -p -e 's/^ *//; s/ *$//; chomp' < FILE > OUTFILE

em que você substitui FILE pelo nome do arquivo e OUTFILE pelo novo arquivo no qual deseja que a saída seja gravada. Não use o mesmo nome de arquivo para ambos.

O que ele faz: perl -p executa um script perl em cada linha da entrada obtida e grava o resultado na saída. Você está configurando a entrada e a saída com os operadores < e > para os arquivos desejados. O próprio script segue a opção -e e faz três substituições.

s/^ *// : substitui qualquer número de espaços (espaço, estrela) no início da linha ( ^ ) com nada (o comando s/this/that/ muda this para that ). Se você espera ter caracteres TAB em vez de espaços, faça s/^[ \t]*// , que substitui qualquer número de espaços ou tabulações ( \t ).

s/ *$// : mesmo, mas no final da linha ( $ ).

chomp : perl-speak para remover a quebra de linha no final de uma linha.

    
por 17.08.2012 / 13:22
0
awk '{ORS=""; print $0}' textfile
<div id="crmpicco">     <div class="ayrshireminis">... content in here ...     </div></div>

Além disso, como já foi apontado, o utilitário tr é incrível para isso. Para remover as novas guias e de uma só vez usando o utilitário tr , faça:

# cat textfile |tr -d '\n\r" "'
<divid=crmpicco><divclass=ayrshireminis>...contentinhere...</div></div>

OBSERVAÇÃO : se você tiver guias em vez de espaços, faça

cat textfile |tr -d '\n\r\t'
    
por 22.05.2016 / 07:58