A seguir estão alguns cenários nos quais a remoção de espaços em branco pode ser necessária:
- Para reformatar o código-fonte
- Para limpar dados
- Para simplificar as saídas de linha de comando
É possível remover os espaços em branco manualmente se um arquivo que contém apenas algumas linhas. Mas, para um arquivo contendo centenas de linhas, será difícil remover todos os espaços em branco manualmente. Existem várias ferramentas de linha de comando disponíveis para este propósito, incluindo sed, awk, cut e tr. Entre essas ferramentas, awk é um dos comandos mais poderosos.
O que é Awk?
Awk é uma linguagem de script poderosa e útil usada na manipulação de texto e geração de relatórios. O comando awk é abreviado com as iniciais de cada uma das pessoas (Aho, Weinberger e Kernighan) que o desenvolveu. Awk permite definir variáveis, funções numéricas, strings e operadores aritméticos; criar relatórios formatados; e mais.
Este artigo explica o uso do comando awk para cortar espaços em branco. Depois de ler este artigo, você aprenderá a usar o comando awk para realizar o seguinte:
- Cortar todos os espaços em branco em um arquivo
- Cortar os espaços em branco à esquerda
- Apare os espaços em branco à direita
- Apare os espaços em branco à esquerda e à direita
- Substitua vários espaços por um único espaço
Os comandos neste artigo foram executados em um Ubuntu 20.04 Sistema Focal Fossa. No entanto, os mesmos comandos também podem ser executados em outras distribuições Linux. Usaremos o aplicativo padrão do Terminal Ubuntu para executar os comandos neste artigo. Você pode acessar o terminal usando o atalho de teclado Ctrl + Alt + T.
Para fins de demonstração, usaremos o arquivo de amostra denominado “amostra.TXT.”Para realizar os exemplos fornecidos neste artigo.
Ver todos os espaços em branco em um arquivo
Para visualizar todos os espaços em branco presentes em um arquivo, canalize a saída do comando cat para o comando tr, da seguinte maneira:
amostra de $ cat.txt | tr "" "*" | tr "\ t" "&"Este comando irá substituir todos os espaços em branco no arquivo fornecido com o caractere (*). Depois de inserir este comando, você será capaz de ver claramente onde todos os espaços em branco (incluindo os espaços em branco à esquerda e à direita) estão presentes no arquivo.
Os caracteres * na captura de tela a seguir mostram onde todos os espaços em branco estão presentes no arquivo de amostra. Um único * representa um único espaço em branco.
Cortar todos os espaços em branco
Para remover todos os espaços em branco de um arquivo, canalize o comando out of cat para o comando awk, da seguinte maneira:
amostra de $ cat.txt | awk 'gsub (/ /, ""); impressão 'Onde
- gsub (significa substituição global) é uma função de substituição
- / / representar o espaço em branco
- “” não representa nada (apare a string)
O comando acima substitui todos os espaços em branco (/ /) por nada (“”).
Na captura de tela a seguir, você pode ver que todos os espaços em branco, incluindo os espaços em branco à esquerda e à direita, foram removidos da saída.
Cortar espaços em branco à esquerda
Para remover apenas os espaços em branco iniciais do arquivo, canalize o comando out of cat para o comando awk, da seguinte maneira:
amostra de $ cat.txt | awk 'sub (/ ^ [\ t] + /, ""); impressão 'Onde
- sub é uma função de substituição
- ^ representa o início da string
- [\ t]+ representa um ou mais espaços
- “” não representa nada (apare a string)
O comando acima substitui um ou mais espaços no início da string (^ [\ t] +) por nada (“”) para remover os espaços em branco iniciais.
Na captura de tela a seguir, você pode ver que todos os espaços em branco iniciais foram removidos da saída.
Você pode usar o seguinte comando para verificar se o comando acima removeu os espaços em branco à esquerda:
amostra de $ cat.txt | awk 'sub (/ ^ [\ t] + /, ""); print '| tr "" "*" |tr "\ t" "&"
Na captura de tela abaixo, é claramente visível que apenas os espaços em branco iniciais foram removidos.
Cortar espaços em branco à direita
Para remover apenas os espaços em branco à direita de um arquivo, canalize o comando out of cat para o comando awk, da seguinte maneira:
amostra de $ cat.txt | awk 'sub (/ [\ t] + $ /, ""); impressão 'Onde
- sub é uma função de substituição
- [\ t]+ representa um ou mais espaços
- $ representa o fim da string
- “” não representa nada (apare a string)
O comando acima substitui um ou mais espaços no final da string ([\ t] + $) por nada (“”) para remover os espaços em branco à direita.
Você pode usar o seguinte comando para verificar se o comando acima removeu os espaços em branco à direita:
amostra de $ cat.txt | awk 'sub (/ [\ t] + $ /, ""); print '| tr "" "*" | tr "\ t" "&"Na captura de tela abaixo, é claramente visível que os espaços em branco à direita foram removidos.
Cortar espaços em branco à esquerda e à direita
Para remover os espaços em branco à esquerda e à direita de um arquivo, canalize o comando out of cat para o comando awk, da seguinte maneira:
amostra de $ cat.txt | awk 'gsub (/ ^ [\ t] + | [\ t] + $ /, ""); impressão 'Onde
- gsub é uma função de substituição global
- ^ [\ t]+ representa os principais espaços em branco
- [\ t] + $ representa espaços em branco à direita
- “” não representa nada (apare a string)
O comando acima substitui os espaços à esquerda e à direita (^ [\ t]+ [\ t] + $) sem nada (“”) para removê-los.
Para determinar se o comando acima removeu os espaços em branco à esquerda e à direita do arquivo, use o seguinte comando:
amostra de $ cat.txt | awk 'gsub (/ ^ [\ t] + | [\ t] + $ /, ""); print '|tr "" "*" | tr "\ t" "&"
Na captura de tela abaixo, é claramente visível que os espaços em branco à esquerda e à direita foram removidos e apenas os espaços em branco entre as strings permanecem.
Substitua vários espaços por um único espaço
Para substituir vários espaços por um único espaço, canalize o comando out of cat para o comando awk, da seguinte maneira:
amostra de $ cat.txt | awk 'gsub (/ [] + /, ""); impressão 'Onde:
- gsub é uma função de substituição global
- []+ representa um ou mais espaços em branco
- “” representa um espaço em branco
O comando acima substitui vários espaços em branco ([] +) por um único espaço em branco (““).
Você pode usar o seguinte comando para verificar se o comando acima substituiu os vários espaços pelos espaços em branco:
amostra de $ cat.txt | awk 'sub (/ [\ t] + $ /, ""); print '| | tr "" "*" | tr "\ t" "&"Havia vários espaços em nosso arquivo de amostra. Como você pode ver, vários espaços em branco na amostra.O arquivo txt foi substituído por um único espaço em branco usando o comando awk.
Para cortar os espaços em branco apenas nas linhas que contêm um caractere específico, como vírgula, dois pontos ou ponto e vírgula, use o comando awk com o -F separador de entrada.
Por exemplo, mostrado abaixo é nosso arquivo de amostra que contém espaços em branco em cada linha.
Para remover os espaços em branco apenas das linhas que contêm uma vírgula (,), o comando seria o seguinte:
$ cat sample1.txt | awk -F, '/, / gsub (/ /, ""); impressão'Onde (-F,) é o separador de campo de entrada.
O comando acima apenas removerá e exibirá os espaços em branco das linhas que contêm o caractere especificado (,) nelas. O resto das linhas não serão afetadas.
Conclusão
Isso é tudo que você precisa saber para cortar os espaços em branco em seus dados usando o comando awk. A remoção dos espaços em branco de seus dados pode ser necessária por diversos motivos. Seja qual for o motivo, você pode facilmente cortar todos os espaços em branco em seus dados usando os comandos descritos neste artigo. Você pode até cortar os espaços em branco à esquerda ou à direita, cortar os espaços em branco à esquerda e à direita e substituir vários espaços por um único espaço com o comando awk.