Sed substitua a nova linha pelo espaço

Sed substitua a nova linha pelo espaço
No Unix/Linux, o comando sed é uma ferramenta dedicada para editar fluxos. Ele pode executar várias operações em um fluxo de texto, como pesquisa, localização e substituição e inserção/exclusão. Na maioria das vezes, no entanto, o sed é usado para encontrar e substituir o conteúdo do texto.

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.TXT

O 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.TXT

No 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.TXT

O comando sed possui várias seções; cada um denota uma tarefa específica:

  • : R: Cria um rótulo 'A'
  • N: Anexa a próxima linha ao espaço de padrões
  • $!BA: Se não a última linha, retorna para rotular 'a'
  • s/\ n//g: encontra e substitui a nova linha (\ n) pelo espaço (//). O padrão é comparado globalmente (/g)

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.TXT

Mé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.txt

També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.TXT

Outra 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.TXT

Semelhante 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.TXT

Conclusã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.