Neste guia, mostraremos a substituição de novas linhas por espaço usando sed.
Usando sed para substituir o texto
Primeiro, vamos examinar rapidamente o desempenho básico de localização e substituir usando sed. O mesmo método será usado ao substituir as novas linhas por espaços por algumas opções adicionais. A estrutura de comando é a seguinte:
$ sed -e 's ///'Dê uma olhada no seguinte comando:
$ echo "The Quick Brown Fox" | sed -e 's/rápido/rápido/g'O comando Echo imprime a string para stdout. O fluxo stdout é então canalizado para sed. Instruímos sed a substituir qualquer instância de rápido para ser substituído por rápido. Finalmente, a saída é impressa na tela.
Substituindo novas linhas por espaço
Para demonstração, criei o seguinte teste de arquivo de texto.txt com vários conteúdos fictícios:
$ Teste CAT.TXTO comando sed aceita expressões regulares para descrever vários padrões. Aproveitando esse recurso, vamos descrever a Newline como \ n. Vamos tentar substituir as novas linhas pelo espaço em branco:
$ sed -e 's/\ n//g' teste.TXTNo entanto, isso não funcionou como esperado. Para atingir esse objetivo, precisamos de algumas opções adicionais. Dê uma olhada no seguinte comando:
$ sed -e ': a; n; $!Ba; S/\ n//G 'Teste.TXTO comando sed possui várias seções; cada um denota uma tarefa específica:
O comando sed percorre as etapas até atingir a última linha, substituindo todos os caracteres com o espaço.
Em vez desse comando complexo, podemos simplificar as coisas usando a bandeira -z que especifica sed para trabalhar com registros separados por nulo. O comando seria assim:
$ sed -z -e 's/\ n//g' teste.TXTMétodos alternativos
Enquanto o SED pode executar a tarefa muito bem, existem algumas ferramentas alternativas. Nesta seção, examinaremos brevemente alguns deles.
Para o exemplo a seguir, podemos usar o comando TR para substituir a Newline pelo espaço em branco de uma maneira simples:
$ tr '\ n "< test.txtTambém podemos usar o Perl para fazer o trabalho. A sintaxe a seguir também é semelhante ao que usamos com sed (mas simplificado):
$ perl -p -e 's/\ n/' teste.TXTOutra maneira de substituir as novas linhas pelo espaço em branco é usar o comando paste. Observe que ele só pode remover um caractere:
$ paste -s -d "teste.TXTSemelhante ao SED, o Linux vem com outra ferramenta Awk. Semelhante ao SED, também pode realizar algumas substituições avançadas na entrada. Para nossa finalidade, use o seguinte comando AWK:
$ awk 1 ors = "teste.TXTConclusão
Este guia explorou como podemos substituir a nova linha pelo espaço usando sed. Foi alcançado de duas maneiras diferentes. Este guia também inclui outras ferramentas relevantes que podemos usar para substituir a nova linha pelo espaço em branco.
Em vez de usar comandos complexos que são difíceis de memorizar, usamos scripts bash para realizar muitas coisas no Linux. Embora tenha o custo de algum desempenho, a flexibilidade e a usabilidade valem a pena. Saiba mais sobre scripts de basquete para iniciantes.