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
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
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
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
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
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
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:
$ 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
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
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
Comando pr
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
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
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
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
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
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
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.