fbpx Certificação Linux: Filtros de texto no Linux [Guia Básico]

Blog

Filtros de texto no Linux [Guia Básico]

📅 01/04/2019 ⏱ 14 min ✍️ Uira Ribeiro
Linuxhow-to
Filtros de texto no Linux [Guia Básico]

O Linux tem diversas ferramentas para trabalhar e transformar arquivos textos. Estas ferramentas são chamadas de filtros de texto e são úteis para trabalhar com scripts, verificando arquivos de log, etc.

Comando cat

&list=PL6IznNGWCdD89jP8kiacplFQcJlmMmjhb&index=7

Uso:

$ cat [opções] arquivo

Quando as opções aparecem entre chaves, elas são opcionais mesmo.

O comando cat concatena arquivos, imprime seu conteúdo de tela e ainda pode receber texto digitado pelo teclado para um arquivo.

Vejamos como criar um arquivo com apenas algumas linhas de texto:

$ cat > teste.txt

Agora você pode digitar qualquer texto. Quando terminar, pressione Ctrl d em uma linha vazia para finalizar a entrada de dados e salvar o arquivo teste.txt.

Para ver o conteúdo do arquivo recém-criado:

$ cat teste.txt

O cat também pode servir para concatenar arquivos.

$ cat texto1.txt > texto.txt

Observe que neste exemplo o conteúdo do arquivo texto.txt é substituído pelo texto1.txt.

Para adicionar o conteúdo do texto1.txt no final arquivo texto.txt o correto seria:

$ cat texto1.txt >> texto.txt

Comando cut

&list=PL6IznNGWCdD89jP8kiacplFQcJlmMmjhb&index=15

Uso:

$ cut opções arquivo

O comando cut traduzido ao pé da letra significa cortar. Ele lê o conteúdo de um ou mais arquivos e tem como saída uma coluna vertical.

Suas opções mais frequentes são:

  • -b número: Imprime uma lista vertical com o byte número (da esquerda para direita);
  • -c número: Imprime uma lista vertical com o caractere número (da esquerda para direita);
  • -d delimitador: Configura o delimitador que separa uma coluna da outra. O padrão é o Tab;
  • -f número: Imprime a coluna número.

Exemplos:

$ cut –d : -f 1 /etc/passwd

$ cut –b 1 /etc/passwd

$ cat /etc/hosts | cut –f 2

Comando expand

&list=PL6IznNGWCdD89jP8kiacplFQcJlmMmjhb&index=24

Uso:

$ expand [opções] arquivo

O comando expand troca o Tab (tabulação) dentro dos textos para o número de espaços correspondentes. É útil para tornar um texto que faz uso das tabulações mais atrativo para determinados dispositivos, como o vídeo, impressora, arquivos, etc.

As opções frequentemente utilizadas são:

  • -t número: Especifica o número de espaços que o tab contém. O padrão é 8;
  • -i: Converte somente no início das linhas.

Exemplo:

$ expand LEIAME.TXT

Comando unexpand

Uso:

$ unexpand [opções] arquivo

O comando unexpand troca o espaço simples por TAB (tabulação) dentro dos textos, no início das linhas. É o inverso do comando expand.

As opções frequentemente utilizadas são:

  • -t número: Especifica o número de espaços que o tab contém. O padrão é 8;
  • -a: Converte todos os espaços ao invés dos espaços no início das linhas.

Exemplo:

$ unexpand LEIAME.TXT

Comando fmt

&list=PL6IznNGWCdD89jP8kiacplFQcJlmMmjhb&index=28

Uso:

$ fmt [opções]

O comando fmt (format) formata um texto com uma largura específica. Ele pode remover espaços ou adicionar espaços conforme a largura desejada. O padrão são 75 caracteres.

A opção frequentemente utilizada é:

  • -w número: Configura a largura desejada para o texto.

Exemplo:

$ fmt –w 50 LEIAME.TXT

Comando head

&index=38&list=PL6IznNGWCdD89jP8kiacplFQcJlmMmjhb

Uso:

$ head [opções]

O comando head (cabeçalho) mostra as primeiras 10 linhas do início do texto.

A opção frequentemente utilizada é:

  • -n número: Configura o número de linhas que o head irá mostrar.

Exemplo:

$ head –n 50 LEIAME.TXT

Comando join

&list=PL6IznNGWCdD89jP8kiacplFQcJlmMmjhb&index=45

Uso:

$ join [opções] arquivo1 arquivo2

O comando join (juntar) une as linhas de ambos os arquivos que tenham um índice comum. O comando join poderá ser utilizado como um banco de dados simples.

As opções frequentemente utilizadas são:

  • -j1 número: Escolhe o campo número como índice para o arquivo1.
  • -j2 número: Escolhe o campo número como índice para o arquivo2.
  • -j número: Escolhe o campo número como índice para ambos os arquivos.

Exemplo:

Suponha que o arquivo1 contenha o seguinte conteúdo:

1      GZH-1234

2      HYD-2389

3      GIS-2348

E o arquivo2 tenha o seguinte conteúdo:

1      Fiat Uno Mille Smart

2      Audi A3

3      Monza

Depois do comando:

$ join –j 1 arquivo1 arquivo2

A saída será a seguinte:

1      GZH-134 Fiat Uni Mille Smart

2      HYD-2389 Audi A3

3      GIS-2348 Monza

TABELA 5 - Símbolos para diferenciar cabeçalho e rodapé

Símbolo Descrição
\:\:\: Símbolo utilizado para iniciar o cabeçalho do texto
\:\: Símbolo utilizado para iniciar o corpo  do texto
\: Símbolo utilizado para iniciar o rodapé  do texto

Veja que o comando join necessita que ambos os arquivos contenham um índice, como no exemplo.

Comando nl

Uso:

&index=65&list=PL6IznNGWCdD89jP8kiacplFQcJlmMmjhb

$ nl [opções] [arquivo]

O comando nl (numerar linhas) é utilizado para numerar as linhas de um arquivo. O comando considera condições especiais para o cabeçalho e o rodapé do arquivo.

As opções frequentemente utilizadas são:

  • -h subopção: Utilizada para formatar o cabeçalho do texto. O padrão é não numerar o cabeçalho;
  • -b subopção: Utilizada para formatar o corpo do texto. O padrão é numerar somente as linhas não vazias;
  • -f subopção: Utilizada para formatar o rodapé do texto. O padrão é não numerar o rodapé.

As subopções são:

  • A: Numerar todas as linhas;
  • t: Numerar somente as preenchidas;
  • n: Não numerar as linhas.

Exemplo:

Suponha que o arquivo.txt tenha o seguinte conteúdo:

\:\:\:

Relatório de Notas e Frequência dos alunos de Engenharia de Software

—————————————————————————————————

Nome   Nota          Freq.         Resultado

—————————————————————————————————

\:\:

Carlos Torres         8,5             80%           Aprovado

José Antônio          10,0           100%         Aprovado

Maria de Lourdes  10,0           100%         Aprovado

Mário Cabral          9,5             100%         Aprovado

\:

—————————————————————————————————

E usarmos o comando nl:

$ nl arquivo.txt

O resultado será:

Relatório de Notas e Frequência dos alunos de Engenharia de Software

—————————————————————————————————

Nome   Nota          Freq.         Resultado

—————————————————————————————————

1 Carlos Torres      8,5             80%           Aprovado

2 José Antônio       10,0           100%         Aprovado

3 Maria de Lourdes                 10,0           100%         Aprovado

4 Mário Cabral       9,5             100%         Aprovado

—————————————————————————————————

Comando od

&list=PL6IznNGWCdD89jP8kiacplFQcJlmMmjhb&index=69

Uso:

$ od [opções] [arquivo]

O comando od (Octal e Demais formatos) é utilizado para visualizarmos o conteúdo de um arquivo nos formatos hexadecimal, octal, ASCII e nome dos caracteres.

A opção frequentemente utilizada é:

  • -t tipo: Especifica o tipo de saída que o comando od deve gerar.

Os tipos possíveis são:

  • a: Nome do caractere;
  • c: ASCII;
  • o: Octal;
  • x: Hexadecimal.

Exemplo:

$ cat > arquivo.txt

Certificação Linux

Ctrl d

$ od –t x arquivo.txt

0000000 74726543 63696669 6fe3e761 6e694c20

0000020 00007875

0000022

Comando paste

&list=PL6IznNGWCdD89jP8kiacplFQcJlmMmjhb&index=72

Uso:

$ paste [opções] arquivo1 arquivo2

O comando paste (colar) é utilizado para concatenar as linhas de diversos arquivos em colunas verticais.

As opções frequentemente utilizadas são:

  • -d’s’: Separa as colunas com o símbolo s dentro das aspas simples;
  • -s: concatena todo o conteúdo de um arquivo com uma linha para cada arquivo.

Exemplo:

Suponha que o arquivo1 tenha o seguinte conteúdo:

lmmoraes

rrodrigues

aduarte

E o arquivo2 tenha o seguinte conteúdo:

provedor.com.br

provedor2.com.br

provedor3.com.br

Ao utilizarmos o comando paste, o resultado será o seguinte:

$ paste –d’@’ arquivo1 arquivo2

lmmoraes@provedor.com.br

rrodrigues@provedor2.com.br

aduarte@provedor3.com.br

Comando pr

&index=76&list=PL6IznNGWCdD89jP8kiacplFQcJlmMmjhb

Uso:

$ pr [opções] arquivo

O comando pr (printing) formata um arquivo texto para uma saída paginada com cabeçalho, margens e largura definidos. É útil para formatar textos crus para impressão. O cabeçalho consiste em data, hora, nome do arquivo e número da página.

As opções frequentemente utilizadas são:

  • -d: Especifica espaçamento duplo;
  • -l número: Especifica o número de caracteres de largura da página. O padrão são 66 caracteres;
  • -o número: Especifica o número de espaços da margem esquerda.

Exemplo:

$ pr –l 75 –o 5 arquivo.txt

Comando split

Uso:

$ split [opções] arquivo_entrada arquivo_saida

O comando split (dividir) é usado para dividir grandes arquivos em n-arquivos menores. Os arquivos de saída são gerados de acordo com o número de linhas do arquivo de entrada.

O padrão é dividir o arquivo a cada 1000 linhas. Os nomes dos arquivos de saída seguem o padrão arquivosaidaaa arquivosaidaab arquivosaidaac, assim por diante.

A opção mais frequente é:

  • -n: Onde n é o número de linhas que irão dividir o arquivo de entrada.

Exemplo:

$ split -20 arquivo1.txt arquivosaida.txt

Comando tail

&list=PL6IznNGWCdD89jP8kiacplFQcJlmMmjhb&index=102

Uso:

$ tail [opções] arquivo

O comando tail (cauda) visualiza as últimas 10 linhas de um arquivo. Funciona como o oposto do comando head.

As opções mais frequentes são:

  • -n número: Especifica o número de linhas finais que o tail irá mostrar de um arquivo;
  • -f: Mostra as últimas linhas finais de um arquivo continuamente enquanto outro processo grava mais linhas. Muito útil para visualizarmos arquivos de LOG.

Exemplo:

$ tail –n 50 /var/log/messages

$ tail –f /var/log/messagens

Comando tr

&list=PL6IznNGWCdD89jP8kiacplFQcJlmMmjhb&index=108

Uso:

$ tr [opções] variável_busca variável_troca

O comando tr faz a troca de uma variável por outra especificada. Este comando não trabalha diretamente com arquivos, portanto deve ser utilizado com a saída padrão de outro comando.

As opções mais frequentes são:

  • -d: Apaga as ocorrências da variável de busca;
  • -s: Suprime as ocorrências repetidas da variável de busca.

Exemplo:

$ cat arquivo1 | tr a-z A-Z

Neste exemplo o comando tr troca todas as letras de a a z para maiúsculas.

$ cat arquivo1 | tr –d a

Neste exemplo o comando tr apaga a letra a.

$ cat arquivo1 | tr –s 1

Neste exemplo o comando tr suprime as ocorrências repetidas do número 1.

O comando tr pode fazer a troca de caracteres da variável de busca pela variável de troca, mas o número de caracteres precisa ser o mesmo em ambas.

Comando wc

&list=PL6IznNGWCdD89jP8kiacplFQcJlmMmjhb&index=125

Uso:

$ wc [opções] [arquivos]

O comando wc conta as linhas, palavras e caracteres de um ou mais arquivos. Se mais de um arquivo for passado como argumento, ele irá apresentar as estatísticas de cada arquivo e também o total.

As opções mais frequentes são:

  • -c: Conta o número de caracteres de um ou mais arquivos;
  • -l: Conta o número de linhas de um ou mais arquivos;
  • -L: Conta o número de caracteres da maior linha do arquivo;
  • -w: Conta as palavras de um ou mais arquivos.

Exemplo:

$ wc LEIAME.TXT

Comando sort

&list=PL6IznNGWCdD89jP8kiacplFQcJlmMmjhb&index=96

Uso:

$ sort [-b] [-d] [-f] [-i] [-m] [-M] [-n] [-r] [-u] arquivo [-o arquivo_ saída]

O comando sort ordena as linhas de um arquivo texto.

Suas opções são:

  • -b: Ignora espaços no início da linha;
  • -d: Coloca as linhas em ordem alfabética e ignora a pontuação;
  • -f: Ignora a diferença entre maiúsculas e minúsculas;
  • -I: Ignora caracteres de controle;
  • -m: Mescla dois ou mais arquivos em um arquivo ordenado de saída;
  • -M: Trata as três primeiras letras das linhas como mês (ex: JAN);
  • -n: Ordena pelos números no início das linhas;
  • -r: Ordena em ordem inversa;
  • -u: Se a linha for duplicada, mostra somente a primeira;
  • -o: Envia a saída do comando para o arquivo.

Ex.:

$ sort arquivo

Comando uniq

&list=PL6IznNGWCdD89jP8kiacplFQcJlmMmjhb&index=116

Uso:

$ uniq [Opções]... [Arquivo_Entrada [Arquivo_Saída]]

O comando uniq remove as linhas duplicadas de um arquivo ordenado.

As opções mais comuns são:

  • -c: Indica no início das linhas o número de ocorrências;
  • -d: Imprime somente as linhas duplicadas;
  • -i: Ignora a diferença entre maiúsculas e minúsculas;
  • -u: Imprime somente as linhas únicas, que não têm duplicatas.

Comando sed

&list=PL6IznNGWCdD89jP8kiacplFQcJlmMmjhb&index=90

Uso:

$ sed [Opções] {script} arquivo

O comando sed é um poderoso editor de strings para filtrar ou editar sequências de texto.

As opções mais comuns são:

  • -e: Adiciona um script aos comandos a serem executados;
  • -f arquivo: Adiciona o conteúdo de um arquivo como script a ser executado;
  • -r: Usa expressões regulares no script.

Exemplos:

Para substituir expressões por outras, utilizamos o “s”, com os delimitadores “/”, de forma que a primeira ocorrência é o texto a ser procurado, e a segunda o texto que será substituído. Observe que o sed somente irá trocar a primeira ocorrência de cada linha, e é sensível a maiúsculas e minúsculas. A saída padrão do sed será o terminal.

$ cat arquivo

Hoje fará calor de noite. A Noite é bela.

$ sed s/noite/dia/ arquivo

Hoje fará calor de dia. A Noite é bela.

Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.

Gostou? Compartilhe

Uira Ribeiro

Prof. Uirá Ribeiro

Chair do Board do Linux Professional Institute

Especialista Linux com mais de 20 anos de experiência.
Autor de 5 livros e mentor de mais de 14.000 alunos certificados.
20 certificações de alto nível, incluindo LPIC-3, CKA, RHCE e AWS Solutions Architect.

WhatsApp