← Back to list

Filtrando textos com sed,cut,paste,grep e awk

Apresentarei os principais filtradores de texto via linha de comando, na ordem do título: sed, cut, paste, grep e awk.

Linux_para_otarios · 2025-11-04 03:03 · 0 claps · 8.4 min read
#de #cut #paste #grep #awk
Open on Medium ↗

Filtrando textos com sed,cut,paste,grep e awk

Apresentarei os principais filtradores de texto via linha de comando, na ordem do título: sed, cut, paste, grep e awk.

SED

Modifica arquivos como um editor de textos, porém sem abrí-los.

Flags:

-d: delete, para deletar linhas ou palavras desejadas.

-s: subtitute, para substituir linhas ou palavras desejadas.

-i: de fato faz alterações nos arquivos, sem o -i, o sed somente ilustrará uma saída desejada.

-p: print, para ilustrar dados do arquivo.

Substituindo uma palavra por outra:

sed ‘s/palavra_original/palavra_nova/’ arquivo

Substitui todas as ocorrências de uma palavra por outra:

sed ‘s/palavra_original/palavra_nova/g’ arquivo

Deleta conteúdo do arquivo:

sed ‘/palavra/d’ arquivo

Adicionar algum conteúdo depois da linha 8:

sed ‘aPALAVRA’ zzz.txt

sed ‘8aBobobo-bobobo-bo’ zzz.txt

Adicionar algum conteúdo antes da linha 2:

sed ‘iPALAVRA’ zzz.txt

sed ‘2iBobobo-bobobo-bo’ zzz.txt

CUT

Exibe um recorte de texto de um arquivo.

Flags:

-c: caracteres, indica a quantidade de caracteres exibida.

-d: delimitador que será o referencial do que se separar.

-f: field, indica campos desejados.

Pego a primeira letra de cada fileira:

cut -c 1 palavras2.txt

Pego as 3 primeiras letras de cada fileira:

cut -c 1,2,3 palavras2.txt

Usando vírgula para delimitar os campos(-f) 1 até o campo 3:

cut -d ‘,’ -f 1,3 palavras2.txt

Usando espaço para delimitar os campos(-f) 1 até o campo 3:

cut -d ‘ ’ -f 1,3 palavras2.txt

Usando vírgula para exibir o campo(-f) 3:

cut -d ‘,’ -f 3 palavras2.txt

Cria um novo arquivo com o padrão desejado:

cut -d ‘,’ -f 3 palavras2.txt > palavras3.txt

Pegando dados do /etc/passwd:

tail -2 /etc/passwd | cut -f1 -d:

Selecionado alguns campos de um arquivo.csv:

cut -f1–3 -d, arquivo.csv

PASTE

Faz a mesma coisa que o cat: amostragem de texto de um arquivo. Porém, enquanto o Paste concatena arquivos lado a lado. Como no exemplo abaixo:

Flags:

-d: delimitador, seguido de um caractere, vai definir, o que ficará entre os textos dos arquivos concatenados.

-s: serial, sozinho vai apenas exibir o texto horizontalmente, como seria o cat.

Usando o + como delimitador entre os dois arquivos numeros1 e numeros2 e usa o programa bc(basic calculator) para somar os números dos arquivos, enviando o resulado para numeros3

paste -d+ numeros1 numeros2 | bc echo > numeros3

Exibindo horizontalmente e depois, com a soma dos números:

paste -s numeros1

paste -s numeros1 -d+ | bc

Fatorial do número 10:

seq 10 | paste -sd* | bc

Fazer várias contas de uma vez:

paste -s numeros1 -d\/*+-

GREP

É um programa que faz buscas de padrões de textos em arquivos.

Antes dos comandos, as utilidades dos caracteres:

Caracteres alfanuméricos:

[0–9]: qualquer número.

[0–9A-Za-z]: qualquer número ou letra do alfabeto(maiúsuclo ou minúsculo).

[A-Za-z]: letra do alfabeto(maiúsuclo ou minúsculo).

Quantificadores:

{x}: indica o número exato de caracteres.

{x,}: indica o número de caracteres ou mais.

{,y}: pede por mais de y caracteres.

{x,y}: pede por padrões entre os números indicados.

Para Regex

Para expressão regular:

.: ponto aceita qualquer caractere, menos quebra de linha(nova linha).

?: interrogação aceita 0 ou 1 caractere.

*****:asterisco aceita 0 ou mais caracteres.

+:mais aceita 1 ou mais caracteres.

Posicionadores:

^: indica início de linha.

$:indica fim de linha.

^$: indica linha vazia.

\<: indica começo de uma palavra.

>: indica fim de uma palavra.

\b \b:representam as pontas de um texto, o início e o fim.

POSIX:

[:alplha:] faz pareamento com qualquer caractere do alfabeto.

[:digit:] faz pareamento com qualquer número.

[:alnum:] faz pareamento com qualquer caractere do alfabeto ou numérico.

[:blank:] faz pareamento com tab ou espaço.

[:lower:] faz pareamento com qualquer caractere do alfabeto em minúsculo.

[:upper:] faz pareamento com qualquer caractere do alfabeto em maiúsculo.

[:print:] faz pareamento com qualquer caractere printável.

[:punct:] faz pareamento com qualquer caractere de pontuação.

Antes das flags:

egrep,fgrep e rgrep são versões já em desuso e estas flags as substituíram.

egrep = grep -E

fgrep = grep -F

rgrep = grep -r

FLAGS:

-F: equivalente ao fgrep, busca pelo padrão exato especificado.

-f: compara padrões entre arquivos.

-r: equivalente ao rgrep, para pesquisar com recursividade, adentrando os diretórios.

-E: equivalente ao egrep, aceita expressões regulares.

-e: habilita regex também.

-i: ignora case sensitive(se é maiúsculo/minúsculo).

-c: contabiliza a quantidade de matches

-l: exibe os arquivos que deram matches.

-L: exibe os arquivos que não deram matches.

-v: exibe as linhas que não deram match.

-m: delimita o número de até x linhas na exibição.

-n: exibe o número de linhas dos matches.

-o: apenas mostra a parte do match do texto.

-x: exibe linhas inteiras onde houve match.

-w: word, indica pro grep fazer pareamento só com palavras.

-W: exibe só linhas.

-A: exibe x linhas depois de um match.

-B: exibe x linhas antes de um match.

-C: exibe x linhas antes e depois de um match.

USO:

grep -FLAGS busca_desejada ARQUIVO

Básico, buscando pelo padrão ‘pamac’, no arquivo pacman.log:

grep pamac pacman.log

Ou se usa o caminho, assim:

grep pamac /var/log/pacman.log

Contando linhas dos padrões(-n) e contando quantidade de aparições(-c):

grep -n pamac pacman.log

grep -n -c pamac pacman.log

Pegando linhas que não estão no padrão:

grep -v Venusaur poke

Inibindo comentários(que começam com #):

grep -v ^# arquivo.csv

Buscando pelas duas iniciais ocorrências que tenham b:

grep -n -i “b” poke | head -n 2

Só mostra a vogal “b” e onde está(linha):

grep -n -o -i “b” poke

Mostra as últimas ocorrência de ‘b’:

grep -n -i “b” poke | tail -n 2

Linhas que começam com maiúsculo:

grep -E ‘^[A-Z]’ poke

Linhas que terminam com número:

Linhas que começam com maiúsculo e terminam com número:

Linhas que começam com maiúsculo ou terminam com número:

Inibindo linhas vazias:

grep -v ^$ palavras.txt

Comando que mostra palavras que tenham 5 dígitos e comecem com S(S+dígitos):

grep -Eow -i ‘\b[sS][a-zA-Z0–9]{4}\b’ poke

Combando grep com pipe, uso mais comum:

history | grep pacman

Combando os dois comandos acima, inibindo comentários e linhas vazias:

Inibindo comentários e linhas vazias de novo, com regex:

grep -Ev ‘(^#|^$)’ arquivo2.csv

Busca algum caractere que tem no arquivo1 que tem no arquivo2:

grep -f numeros1 numeros2

Busca por linhas exatamente iguais:

grep -Fxf poke pokem.txt

Busca por palavras exatamente iguais:

grep -F -f poke pokem.txt

Usando -r para buscar pelo padrão ‘Bulbasaur’ em vários arquivos(-n pra contar):

grep -rn Bulbasaur ./

Mostrando os arquivos que deram match com -l:

grep -rl Bulbasaur ./

Combando com o wc para contar:

grep -r “Bulbasaur” ./ | wc -l

Usando “| grep” para filtrar uma parte desejada do texto:

man ls | grep “ -a”

Indicando que desejo que se exiba mais uma linha após o match com -A1:

man ls | grep -A1 “ -a”

Mostrando linhas com números:

grep 8 arquivo.csv

grep [0–9] arquivo.csv

Pega palavras que tenham 3 a 6 dígitos.

grep -Eow ‘\b[a-zA-Z]{3,6}\b’ arquivo.csv

AWK

É uma linguagem de programação voltada para filtragem de texto. Por padrão é case sensitive e suporta regex.

Flags:

-v: define uma variável.

-f: aponta para um arquivo que será usado.

-F: field, de campo separador, o padrão é o espaço, mas com esta flag pode ser redefinido.

Formato:

awk ‘{comando}’ arquivo

awk ‘/regex/{comando}’ arquivo

Uso:

Printar tudo e printar só a primeira coluna e primeira e segunda colunas:

awk ‘{print $0}’ poke

awk ‘{print $1}’ poke

awk ‘{print $1,$2}’ poke

Por padrão, awk usa espaço como separador, então se quiser ver colunas com base em outro separador:

awk -F, ‘{print $3,$2}’ arquivo.csv

Usando dois-pontos e um separador entre as saídas:

awk -F: ‘{print $1 “ → “ $6 “ → “ $7}’ /etc/passwd

(Mostrando os usuários e o caminho do shell no /etc/passwd, onde o $1 indica primeiro campo, $6 sexto campo e $7 sétimo campo, e os campos são delimitados pelo -F:.)

Usando com o grep:

awk -F: ‘{print $1 “ → “ $6 “ → “ $7}’ /etc/passwd | grep “iosephvs”

Ignorando se o texto é maiúsculou minúsculo:

awk ‘/[Bb]ulbasaur/’ poke

awk ‘BEGIN{IGNORECASE=1} /bulbasaur/’ poke

Exclamação nega o padrão:

awk ‘!/elekid/’ poke

Linhas que começam com uma palavra:

awk ‘/^Snivy/’ poke

Linhas que terminam com uma palavra:

awk ‘/Venusaur$/’ poke

Linhas que começam com uma palavra e terminam:

awk ‘/^Bulbasaur Venusaur$/’ poke

Linhas com uma determinada sequência de caracteres, 4 números neste caso:

awk ‘/[0–9]{4}/’ poke

Linhas que só tem letras:

awk ‘/[A-Za-z]/’ poke

Linhas que começam com letras maiúsculas:

awk ‘/^[A-Z]/’ poke

Linhas que começam com letras e terminam com números:

*awk ‘/^[A-Za-z].[0–9]$/’ file.txt**

Contabilizar uma quantidade de padrões(a quantidade de vezes que 2025 aparece):

Acabou.


메타데이터
post_id
c58ea87167b0
slug
filtrando-textos-com-sed-cut-paste-grep-e-awk-c58ea87167b0
url
https://medium.com/@linux-para-otarios/filtrando-textos-com-sed-cut-paste-grep-e-awk-c58ea87167b0
canonical_url
https://medium.com/@linux-para-otarios/filtrando-textos-com-sed-cut-paste-grep-e-awk-c58ea87167b0
author_url
https://medium.com/@linux-para-otarios
status
ok
fetched_at
2026-06-09 15:37:30