Se falarmos sobre os principais espaços em branco, eles são relativamente fáceis de identificar, pois estão no início do texto. No entanto, não é fácil identificar os espaços de branco à direita. O mesmo é o caso de espaços duplos que às vezes também são difíceis de identificar. Tudo se torna mais desafiador quando você precisa remover todos os espaços de branco que lideram e à direita de um documento contendo milhares de linhas.
Para remover os espaços em branco do seu documento, você pode usar várias ferramentas como AWK, SED, Cut e TR. Em alguns outros artigos, discutimos o uso de AWK na remoção dos espaços em branco. Neste artigo, discutiremos o uso do SED para remover os espaços em branco dos dados.
Você aprenderá a usar sed para:
Estaremos executando os comandos no Ubuntu 20.04 Fossa focal. Você também pode executar os mesmos comandos em outras distribuições Linux. Usaremos o aplicativo de terminal Ubuntu padrão para executar os comandos. Para abrir o terminal, use o atalho do teclado Ctrl+Alt+T.
O que é sed
O Sed (Stands for Stream Editor) é um utilitário muito poderoso e útil no Linux que nos permite realizar manipulações básicas de texto nos fluxos de entrada. Não é um editor de texto, mas ajuda a manipular e filtrar o texto. Ele recebe os fluxos de entrada e o edita de acordo com as instruções do usuário e, em seguida, imprima o texto transformado na tela.
Com sed, você pode:
Usando sed para remover os espaços de branco
Usaremos a seguinte sintaxe para remover os espaços de branco do texto:
s /regexp /substituição /sinalizadores
Onde
Expressões regulares
Algumas das expressões regulares que usaremos aqui são:
Para fins de demonstração, usaremos o seguinte arquivo de amostra chamado "TestFile".
Veja todos os espaços em branco em um arquivo
Para encontrar todos os espaços de branco em seu arquivo, transmitir a saída do comando CAT para o comando TR:
$ CAT TestFile | tr "" "*" | tr "\ t" "e"
Este comando substitui todos os espaços de branco em seu arquivo pelo símbolo (*), o que facilita a identificação de todos os espaços em branco, sejam eles solteiros, múltiplos, liderando ou de branco à direita.
Na captura de tela a seguir, você pode ver os espaços em branco são substituídos por * símbolo.
Remova todos os espaços de branco (incluindo espaços e guias)
Em alguns casos, você precisa remover todos os espaços de branco dos dados, eu.e. liderança, trilha e os espaços em branco entre os textos. O comando a seguir removerá todos os espaços em branco do “arquivo de testes”.
$ CAT TestFile | sed -r 's/\ s+// g'
Observação: O SED não altera seus arquivos, a menos que você salve a saída no arquivo.
Saída:
Depois de executar o comando acima, apareceu a saída a seguir, o que mostra que todos os espaços em branco foram removidos do texto.
Você também pode usar o seguinte comando para verificar se todos os espaços em branco foram removidos.
$ CAT TestFile | sed -r 's/\ s+// g' | tr "" "*" | tr "\ t" "e"
Da saída, você pode ver que não é (*) símbolo, o que significa que todos os espaços em branco foram removidos.
Para remover todos os espaços em branco, mas apenas de uma linha específica (digamos a linha número 2), você pode usar o seguinte comando:
$ CAT TestFile | sed -r '2s/\ s+// g'
Remova todos os espaços de branco (incluindo espaços e guias)
Para remover todos os espaços de brancos do início de cada linha (espaços de brancos principais), use o seguinte comando:
$ CAT TestFile | sed 's/^[\ t]*//'
Saída:
A saída a seguir apareceu após a execução do comando acima, que mostra que todos os principais espaços de branco foram removidos do texto.
Você também pode usar o seguinte comando para verificar se todos os principais espaços de branco foram removidos:
$ CAT TestFile | sed 's/^[\ t]*//' | tr "" "*" | tr "\ t" "e"
A partir da saída, você pode ver que não há (*) símbolo no início das linhas que verificam se todos os principais espaços de branco são removidos.
Para remover os principais espaços de branco de apenas uma linha específica (digamos a linha número 2), você pode usar o seguinte comando:
$ CAT TestFile | sed '2s/^[\ t]*//'
Remova todos os espaços de branco à direita (incluindo espaços e guias)
Para remover todos os espaços em branco do final de cada linha (espaços em branco à direita), use o seguinte comando:
$ CAT TestFile | sed 's/[\ t]*$ //'
Saída:
A saída a seguir apareceu após a execução do comando acima, que mostra que todos os espaços de branco à direita foram removidos do texto.
Você também pode usar o seguinte comando para verificar se todos os espaços em branco foram removidos.
$ CAT TestFile | sed 's/[\ t]*$ //' | tr "" "*" | tr "\ t" "e"
A partir da saída, você pode ver que não há (*) símbolo no final das linhas que verifique se todos os espaços de branco à direita são removidos.
Para remover os espaços de branco à direita de apenas uma linha específica (digamos a linha número 2), você pode usar o seguinte comando:
$ CAT TestFile | sed '2s/[\ t]*$ //'
Remova os espaços de braçadeira de liderança e à direita
Para remover todos os espaços de branco do início e do final de cada linha (i.e. Espaços de brancos principais e à direita), use o seguinte comando:
$ CAT TestFile | sed 's/^[\ t]*//; s/[\ t]*$ //'
Saída:
A saída a seguir apareceu após a execução do comando acima, o que mostra que os espaços de branco principal e à direita foram removidos do texto.
Você também pode usar o seguinte comando para verificar se os espaços de branco principal e à direita foram removidos.
$ CAT TestFile | sed 's/^[\ t]*//; s/[\ t]*$ //' | tr "" "*" | tr "\ t" "e"
A partir da saída, você pode ver que não há (*) símbolo no início ou no final das linhas que verifique se todos os espaços de branco principal e à direita são removidos.
Para remover os espaços de brancos principais e a direita de apenas uma linha específica (digamos a linha número 2), você pode usar o seguinte comando:
$ CAT TestFile | sed '2s/^[\ t]*//; 2s/[\ t]*$ //'
Substitua vários espaços de branco por um espaço de branco único
Em alguns casos, existem vários espaços em branco no mesmo lugar no arquivo, mas você só precisa de um espaço de branco único. Você pode fazer isso substituindo esses vários espaços por um único espaço usando sed.
O comando a seguir substituirá todos os múltiplos espaços em branco por um espaço em branco de cada linha no “TestFile”.
$ CAT TestFile | sed 's/[] \+//g'
Saída:
A saída a seguir apareceu após a execução do comando acima, que mostra que os múltiplos espaços de branco foram substituídos pelo espaço de branco único.
Você também pode usar o seguinte comando para verificar se vários espaços de branco são substituídos pelo espaço de branco único:
$ CAT TestFile | sed 's/[] \+//g' | tr "" "*" | tr "\ t" "e"
A partir da saída, você pode ver o símbolo único (*) em cada local, que verifica se todas as ocorrências dos múltiplos espaços de branco são substituídos por um único espaço em branco.
Então, isso se tratava de remover os espaços em branco dos seus dados usando sed. Neste artigo, você aprendeu a usar o SED para remover todos os espaços em branco dos seus dados, remover apenas o espaço de liderança ou o espaço em branco e remover o espaço em branco e a trilha. Você também aprendeu a substituir os vários espaços por um único espaço. Agora será fácil para você remover os espaços em branco de um arquivo contendo centenas ou milhares de linhas.