O `sed` é uma ferramenta de linha de comando muito poderosa usada em sistemas Unix/Linux para **processar e transformar texto**. O nome vem de **Stream EDitor**, ou seja, ele lê dados linha por linha (stream) e pode aplicar comandos de edição como substituição, inserção, deleção e muito mais. - Substitui texto dentro de arquivos ou streams. - Deleta linhas específicas. - Insere ou adiciona texto. - Extrai padrões com regex. - Tudo isso sem precisar abrir o arquivo em um editor como o `vim`. ### Parâmetros mais usados: - `-i` Altera o arquivo - `-e` Imprime na tela sem alterar o arquivo - `-n` Faz a supressão, mostra só o resultado do comando - `s` Substitui um trecho de texto por outro - `!` Inverte a lógica do comando - `;` Separador de comandos - `|` Separador de strings - `d` No final deleta - `p` No final imprime - `g` No final (como se usa o d e p) altera todas as ocorrências - `q` Sai do sed , não continua o comando ### Comandos Básicos Substituir texto em um arquivo ```shell # Substitui a palavra "velho" por "novo": sed 's/velho/novo/' arquivo.txt ``` Imprime apenas a nona linha: ```shell sed -n '9p' arquivo.txt ``` Imprime da sexta linha até a nona linha ```shell sed -n '6,9p' arquivo.txt ```` Deleta todas as lihas que contém a palavra string no arquivo ```shell sed -i '/string/d' arquivo.txt` ``` ### Comandos Uteis ```shell # Coloca uma palavra no INÍCIO de cada linha sed 's/^/palavra/' arquivo.txt # Coloca uma palavra no final de cada linha sed 's/$/palavra/' arquivo.txt # Imprime só as linhas que COMEÇAM com a string 'http' sed -n '/^http/p' arquivo.txt # Deleta só as linhas que COMEÇAM com a string 'http' sed -n '/^http/d' arquivo.txt # Troca TODAS ocorrências da palavra “marcos”, “eric”, “camila” pela palavra “pinguim” sed 's/marcos\|eric\|camila/pinguim/g' arquivo.txt # Deleta linha em branco e altera o arquivo sed -i '/^$/d' arquivo.txt # Substitui “foo” por “bar” somente as linhas que contém "plop" sed '/plop/s/foo/bar/g' arquivo.txt # Substitui "foo" por "bar" exceto as linhas que contém "plop" sed '/plop/!s/foo/bar/g' arquivo.txt # Insere da Linha 2 a linha 7 o “#” no início de cada linha sed '2,7s/^/#/' arquivo.txt # Insere a palavra ‘NEW’ no início de cada linha, da linha 21 até a linha 28 sed -i '21,28s/^/NEW/' arquivo.txt # @ Troca tudo entre as tags "<" e ">" pela palavra “CODIGO”: sed 's/<[^>]*>/CODIGO/g' arquivo.txt # Imprime somente a primeira ocorrência da linha com determinada string sed -n '/dia/{p;q;}' arquivo.txt # Inclue texto no final da linha 9 sed '9s/$/final da linha/' arquivo.txt # Coloca todas as linhas em uma só sed ':a;$!N;s/\n//;ta;' arquivo.txt # Substitui a palavra “BELEZA” por “SIM” somente entre determinadas linhas sed '3,6s/BELEZA/SIM/' arquivo.txt # Apaga o que está entre a palavra “falou” e “segundo” ( delimitadores ) sed '/segundo/{/falou/{s/segundo.*falou//;t};:a;/falou/!{N;s/\n//;ta;};s/segundo.*falou/\n/;}' arquivo.txt # Apaga o 1o caracter da frase sed 's/.//' arquivo.txt # Apaga o 4o caractere da frase sed e's/.//4' arquivo.txt # Awf Apaga os 4 primeiros caracteres sed 's/.\{4\}//' arquivo.txt # - Apaga no mínimo 4 caracteres sed 's/.\{4,\}//' arquivo.txt # Apaga de 2 a 4 caracteres (o máx. que tiver) sed 's/.\{2,4\}//' arquivo.txt # Exemplos de intervalo echo "aáeéiíoóuú" | sed "s/[a-u]//g" # Apagar números sed '1,/[0-9]\{3\}/d' arquivo.txt # Imprime só linhas que contém PONTUAÇÃO s/[0-9]\+//g' arquivo.txt # Imprime só linhas que começam com Números sed -n '/[[:punct:]]/p' arquivo.txt sed -n '/^[[:digit:]]/p' arquivo.txt ```