Introdução

Este texto se propõe a ser uma maneira fácil das pessoas acharem aquele sed perdido para resolver seu problema, ou seja, aqui vamos direto ao ponto, sem frescura ou enrolação.

Se você está procurando um texto que explique o SED, visite estes links:

  1. http://sed.sourceforge.net/ - Página $HOME do sed
  2. http://aurelio.net/sed/sed-HOWTO/ - sed HOWTO em pt_BR
  3. http://aurelio.net/sed/ - página com links e programas em sed (pt_BR)
  4. http://br.groups.yahoo.com/group/sed-br/ - página da lista sed-br
  5. http://www.math.fu-berlin.de/user/guckes/sed/ - página da lista sed users (vários links e docs - english)
  6. http://aurelio.net/er/ - expressões regulares (pt_BR)

Descrição do Sed

O Sed é um editor de textos não interativo.

Ele pode editar automaticamente, sem interação do usuário, vários arquivos seguindo um conjunto de regras especificadas.

O que significa a palavra Sed

Vem do inglês “Stream EDitor”, ou seja, editor de fluxos (de texto).

Como saber se devo usar o Sed

Sendo um editor de textos não interativo, o Sed é excelente para desempenhar algumas tarefas, mas em outras seu uso não é aconselhado.

Quando usar o Sed

A característica principal do Sed é poder editar arquivos automaticamente.

Então sempre que você precisar fazer alterações sistemáticas em vários arquivos, o Sed é uma solução eficaz.

Por exemplo, você tem um diretório cheio de relatórios de vendas, e descobriu que por um erro na geração, todas as datas saíram erradas, com o ano de 1999 onde era para ser 2000. Num editor de textos normal, você tem que abrir os relatórios um por um e alterar o ano em todas as ocorrências.

Certo, isso não é tão complexo se o editor de textos possuir uma ferramenta de procura e troca, também chamado de substituição.

Mas então suponhamos que o erro da data não seja o ano, e sim o formato, tendo saído como mm/dd/aaaa quando deveria ser dd/mm/aaaa. Aqui não é uma substituição e sim uma troca de lugares, e uma ferramenta simples de procura e troca não poderá ajudar.

Esse é um caso típico onde o Sed mostra seu poder: alterações complexas em vários arquivos.

Utilizando o Sed, a solução para este problema (que veremos adiante) é até simples, bastando definir uma série de regras de procura e troca, e o programa se encarregará de executá-las e arrumar os relatórios.

Quando não usar o Sed

Nenhuma ferramenta é ideal para todas as tarefas, e o Sed não é uma exceção à regra.

Edição genérica de textos

Ele não é prático para ser utilizado como editor de textos de uso genérico.

Para escrever textos, ou alterar coisas simples, é mais rápido e fácil abrir um editor de textos interativo como o vi ou o emacs e fazer a alteração “na mão”.

Programação avançada

O Sed não é uma linguagem de programação completa, pois não possui variáveis, funções matemáticas, interação com o sistema operacional, entre outras limitações. Mas bem, ele é um manipulador de texto e não uma linguagem de uso geral.

Algumas estruturas complexas podem ser simuladas com alguma técnica, mas se o seu programa em Sed começou a inchar muito, é aconselhável reescrevê-lo numa linguagem com mais recursos, como o perl.

Como o Sed ele funciona

O Sed funciona como um filtro, por onde você passa um texto X e ele joga na saída um texto Y.

O texto X virou Y seguindo algumas regrinhas que você determinou.

Pense no Sed como um processador de alimentos, dependendo da lâmina utilizada, a batata sai cortada de uma maneira diferente :)

  • o Sed funciona como um filtro, ou conversor.
  • o Sed é orientado a linha, de cima para baixo, da esquerda para a direita.
  • o Sed lê uma linha da entrada padrão (STDIN) ou de um arquivo especificado, aplica os comandos de edição e mostra o resultado na saída padrão (STDOUT). vai para a próxima linha e repete o processo.
  • o Sed aceita endereços para os comandos.
  • o Sed aplica os comandos para todas as linhas caso um endereço não seja especificado.
  • o Sed faz uso intensivo de expressões regulares.
  • o Sed é macho :)

Sua sintaxe

A sintaxe genérica de um comando Sed é:

sed [opções] regras [arquivo]

Sendo que regras tem a forma genérica de:

[endereço1 [, endereço2]] comando [argumento]

Alfabeto do Sed

Caracter Descrição O que ele Faz
a append anexa um texto após o [BUFFER]
b branch pula até uma marcação
c change troca o [BUFFER] por um texto
d delete apaga o [BUFFER]
D delete apaga a primeira linha do [BUFFER]
e execute executa um comando do sistema #GNU-sed
F filename imprime o nome do aquivo atual #GNU-sed
g get copia texto do [BUFFER] pro [RESERVA] (sobrescreve)
G get copia texto do [BUFFER] pro [RESERVA] (anexa)
h hold copia texto do [RESERVA] pro [BUFFER] (sobrescreve)
H hold copia texto do [RESERVA] pro [BUFFER] (anexa)
i insert insere um texto antes do [BUFFER]
l list imprime o [BUFFER] mostrando caracteres invisíveis
n next carrega a próxima linha no [BUFFER]
N next anexa a próxima linha no [BUFFER]
p print imprime o conteúdo do [BUFFER]
P print imprime a primeira linha do [BUFFER]
q quit imprime o [BUFFER] e finaliza o Sed
Q quit descarta o [BUFFER] e finaliza o Sed #GNU-sed
r read mostra conteúdo do arquivo após o [BUFFER]
R read mostra uma linha do arquivo após o [BUFFER] #GNU-sed
s substitute substitui um trecho de texto por outro
t tee pula na marcação, se um s/// funcionou
T tee pula na marcação, se nenhum s/// funcionou #GNU-sed
v version aborta se a versão do sed for incompatível #GNU-sed
w write grava o [BUFFER] num arquivo
W write grava a 1ª linha do [BUFFER] num arquivo #GNU-sed
x eXchange troca os conteúdos do [BUFFER] e [RESERVA]
y ? troca caracteres
z zap limpa o conteúdo do [BUFFER] #GNU-sed

Nota:

  1. [BUFFER] - Buffer padrão do sed (pattern space)
  2. [RESERVA] - Buffer reserva do sed (hold space)

Descrição de todos os comandos

Podemos obter o manual muito bem documentado em

man sed

Podemos ver tambem um help

pinfo sed

Ou num resumo rápido:

Legenda: Descrição
[ARQUIVO] arquivo ou fluxo de texto (via pipe) original a ser modificado
[TEXTO] trecho de texto. pode ser uma palavra, uma linha, várias separadas por \n, ou mesmo um vazio.
[PADRÃO] [TEXTO] contido no ESPAÇO PADRÃO
= imprime o número da linha atual do [ARQUIVO]
# inicia um comentário
! inverte a lógica do comando
; separador de comandos
, separador de faixas de endereço
{ início de bloco de comandos
} fim de bloco de comandos
s substitui um trecho de texto por outro
y traduz um caractere por outro
i insere um texto antes da linha atual
c troca a linha atual por um texto
a anexa um texto após a linha atual
g restaura o [TEXTO] contido no ESPAÇO RESERVA (sobrescrevendo)
G restaura o [TEXTO] contido no ESPAÇO RESERVA (anexando)
h guarda o [PADRÃO] no ESPAÇO RESERVA (sobrescrevendo)
H guarda o [PADRÃO] no ESPAÇO RESERVA (anexando)
x troca os conteúdos dos ESPAÇO PADRÃO e RESERVA
p imprime o [PADRÃO]
P imprime a primeira linha do [PADRÃO]
l imprime o [PADRÃO] mostrando caracteres brancos
r inclui conteúdo de um arquivo antes da linha atual
w grava o [PADRÃO] num arquivo
: define uma marcação
b pula até uma marcação
t pula até uma marcação, se o último s/// funcionou (condicional)
d apaga o [PADRÃO]
D apaga a primeira linha do [PADRÃO]
n vai para a próxima linha
N anexa a próxima linha no [PADRÃO]
q finaliza o Sed imediatamente

Lista de todos os comandos por categoria

Legenda Caracter
informações =
marcadores :
comentários #
comandos de edição s i c a y
comandos de registradores g G h H x
comandos de impressão p P l
comandos de arquivo r w
modificadores g i !
separadores ; -e \n
controle de fluxo b t d D n N q
endereço // ,
limitadores {} \(\)
registradores dinâmicos \1 \2 … \9

Texto padrão

Em todos os exemplos vamos procurar manter sempre o mesmo texto para facilitar a compreensão das perguntas e respostas. Esperamos deste modo deixar o só sed mais amigável e que você ache a sua pergunta de maneira fácil e agil. =8)

Dica:

Leia o arquivo de entrada com calma. Analise-o, respire e releia-o.

Assim ficará mais fácil para você entender os exemplos e as mudanças ocorridas após a execução de cada sed.

Vamos usar o seguinte arquivo para todos os exemplos

cat arquivo.txt
  No início do início, era um nada.
   No segundo dia, fez um rascunho à lápis.
    No terceiro dia, apagou e começou tudo de novo.
     No quarto dia, ficou com preguiça, então falou:

  - Sexta-feira eu continuo, se não estiver cansado...

    E no fim, nada.

Brincando com linhas

Imprimir somente as linhas com uma determinada string

O comando

sed -n '/dia/p'

Vamos testar em nosso arquivo

sed -n '/dia/p' arquivo.txt 
   No segundo dia, fez um rascunho à lápis.
    No terceiro dia, apagou e começou tudo de novo.
     No quarto dia, ficou com preguiça, então falou:

Imprimir somente a primeira ocorrência da linha com determinada string

O comando

sed -n '/dia/{p;q;}'

Vamos testar em nosso arquivo

sed -n '/dia/{p;q;}' arquivo.txt 
   No segundo dia, fez um rascunho à lápis.

Imprimir a última ocorrência da linha com determinada string

O comando

sed -n '/dia/h;${x;p;}'

Vamos testar em nosso arquivo

sed -n '/dia/h;${x;p;}' arquivo.txt 
     No quarto dia, ficou com preguiça, então falou:

Imprimir da primeira ocorrência da string até o final

O comando

sed '/dia/,$!d'

Vamos testar em nosso arquivo

sed '/dia/,$!d' arquivo.txt 
   No segundo dia, fez um rascunho à lápis.
    No terceiro dia, apagou e começou tudo de novo.
     No quarto dia, ficou com preguiça, então falou:
  
  - Sexta-feira eu continuo, se não estiver cansado...
  
    E no fim, nada.

Imprimir da última ocorrência da string até o final

O comando

sed -n '/dia/{h;${x;p;};d;};H;${x;p;}'

Vamos testar em nosso arquivo

sed -n '/dia/{h;${x;p;};d;};H;${x;p;}' arquivo.txt     
     No quarto dia, ficou com preguiça, então falou:
  
  - Sexta-feira eu continuo, se não estiver cansado...
  
    E no fim, nada.

Apagar as linhas com uma determinada string

O comando

sed '/dia/d'

Vamos testar em nosso arquivo

sed '/dia/d' arquivo.txt 
  No início do início, era um nada.
  
  - Sexta-feira eu continuo, se não estiver cansado...
  
    E no fim, nada.

Apagar apenas a primeira linha com determinada string I

O comando

sed '/dia/{H;x;/^\n/d;g;}'

Vamos testar em nosso arquivo

sed '/dia/{H;x;/^\n/d;g;}' arquivo.txt
  No início do início, era um nada.
    No terceiro dia, apagou e começou tudo de novo.
     No quarto dia, ficou com preguiça, então falou:
  
  - Sexta-feira eu continuo, se não estiver cansado...
  
    E no fim, nada.

Apagar apenas a primeira linha com determinada string II

O comando

sed -n '/dia/{:a;n;p;ba;};p'

Vamos testar em nosso arquivo

sed -n '/dia/{:a;n;p;ba;};p' arquivo.txt
  No início do início, era um nada.
    No terceiro dia, apagou e começou tudo de novo.
     No quarto dia, ficou com preguiça, então falou:
  
  - Sexta-feira eu continuo, se não estiver cansado...
  
    E no fim, nada.

Adicionar texto no início da linha

O comando

sed 's/^/texto incluido/'

Vamos testar em nosso arquivo

sed 's/^/texto incluido/' arquivo.txt 
texto incluido  No início do início, era um nada.
texto incluido   No segundo dia, fez um rascunho à lápis.
texto incluido    No terceiro dia, apagou e começou tudo de novo.
texto incluido     No quarto dia, ficou com preguiça, então falou:
texto incluido  
texto incluido  - Sexta-feira eu continuo, se não estiver cansado...
texto incluido  
texto incluido    E no fim, nada.

Adicionar texto no final da linha

O comando

sed 's/$/texto incluido/'

Vamos testar em nosso arquivo

sed 's/$/texto incluido/' arquivo.txt 
  No início do início, era um nada.texto incluido
   No segundo dia, fez um rascunho à lápis.texto incluido
    No terceiro dia, apagou e começou tudo de novo.texto incluido
     No quarto dia, ficou com preguiça, então falou:texto incluido
  texto incluido
  - Sexta-feira eu continuo, se não estiver cansado...texto incluido
  texto incluido
    E no fim, nada.texto incluido

Retirar linhas em branco

O comando

sed '/^$/d'

Vamos testar em nosso arquivo

sed '/^$/d' arquivo.txt
  No início do início, era um nada.
   No segundo dia, fez um rascunho à lápis.
    No terceiro dia, apagou e começou tudo de novo.
     No quarto dia, ficou com preguiça, então falou:
  - Sexta-feira eu continuo, se não estiver cansado...
    E no fim, nada.

Incluir texto no início da linha N

OBS: troque o número 1 para a linha que você quiser

O comando

sed '1s/^/começo do arquivo/'

Vamos testar em nosso arquivo

sed '1s/^/começo do arquivo/' arquivo.txt 
começo do arquivo  No início do início, era um nada.
   No segundo dia, fez um rascunho à lápis.
    No terceiro dia, apagou e começou tudo de novo.
     No quarto dia, ficou com preguiça, então falou:

  - Sexta-feira eu continuo, se não estiver cansado...

    E no fim, nada.

Incluir texto no final da linha N

OBS: troque o número 1 para a linha que você quiser

O comando

sed '1s/$/final da linha/'

Vamos testar em nosso arquivo

sed '1s/$/final da linha/' arquivo.txt 
  No início do início, era um nada.final da linha
   No segundo dia, fez um rascunho à lápis.
    No terceiro dia, apagou e começou tudo de novo.
     No quarto dia, ficou com preguiça, então falou:

  - Sexta-feira eu continuo, se não estiver cansado...

    E no fim, nada.

Incluir texto na linha N apagando o conteúdo existente

OBS: troque o número 1 para a linha que você quiser

O comando

sed '1s/.*/início do arquivo/'

Vamos testar em nosso arquivo

sed '1s/.*/início do arquivo/' arquivo.txt 
início do arquivo
   No segundo dia, fez um rascunho à lápis.
    No terceiro dia, apagou e começou tudo de novo.
     No quarto dia, ficou com preguiça, então falou:

  - Sexta-feira eu continuo, se não estiver cansado...

    E no fim, nada.

Incluir texto antes da linha N

OBS: troque o número 1 para a linha que você quiser

O comando

sed -e '1i\' -e 'começo do arquivo'

Vamos testar em nosso arquivo

sed -e '1i\' -e 'começo do arquivo' arquivo.txt 
começo do arquivo
  No início do início, era um nada.
   No segundo dia, fez um rascunho à lápis.
    No terceiro dia, apagou e começou tudo de novo.
     No quarto dia, ficou com preguiça, então falou:

  - Sexta-feira eu continuo, se não estiver cansado...

    E no fim, nada.

Incluir linha após a última

O comando

sed -e '$a\' -e 'linha final'

Vamos testar em nosso arquivo

sed -e '$a\' -e 'linha final' arquivo.txt 
  No início do início, era um nada.
   No segundo dia, fez um rascunho à lápis.
    No terceiro dia, apagou e começou tudo de novo.
     No quarto dia, ficou com preguiça, então falou:

  - Sexta-feira eu continuo, se não estiver cansado...

    E no fim, nada.
linha final

Imprimir somente a linha N

OBS: troque o número 2 para a linha que você quiser

O comando

sed '2!d'

Vamos testar em nosso arquivo

sed '2!d' arquivo.txt 
   No segundo dia, fez um rascunho à lápis.

Retirar a linha N

OBS: troque o número 2 pela linha que você quiser

O comando

sed '2d'

Vamos testar em nosso arquivo

sed '2d' arquivo.txt 
  No início do início, era um nada.
    No terceiro dia, apagou e começou tudo de novo.
     No quarto dia, ficou com preguiça, então falou:

  - Sexta-feira eu continuo, se não estiver cansado...

    E no fim, nada.

Extrair um trecho de uma linha

OBS: O mesmo que cut -d, -f2

O comando

sed 's/^[^,]*,\([^,]\+\),\?.*/\1/'

Vamos testar em nosso arquivo

sed 's/^[^,]*,\([^,]\+\),\?.*/\1/' arquivo.txt
 era um nada.
 fez um rascunho à lápis.
 apagou e começou tudo de novo.
 ficou com preguiça

 se não estiver cansado...

 nada.

Retirar espaços em branco repetidos

O comando

sed 's/[ ]\+/ /g'

Vamos testar em nosso arquivo

sed 's/[ ]\+/ /g' arquivo.txt 
 No início do início, era um nada.
 No segundo dia, fez um rascunho à lápis.
 No terceiro dia, apagou e começou tudo de novo.
 No quarto dia, ficou com preguiça, então falou:

 - Sexta-feira eu continuo, se não estiver cansado...

 E no fim, nada.

Retirar espaços em branco no início da linha

O comando

sed 's/^ \+//'

Vamos testar em nosso arquivo

sed 's/^ \+//' arquivo.txt 
No início do início, era um nada.
No segundo dia, fez um rascunho à lápis.
No terceiro dia, apagou e começou tudo de novo.
No quarto dia, ficou com preguiça, então falou:

- Sexta-feira eu continuo, se não estiver cansado...

E no fim, nada.

Apagar uma string do início da linha

O comando

sed 's/^No//' arquivo.txt 
  No início do início, era um nada.
   No segundo dia, fez um rascunho à lápis.
    No terceiro dia, apagou e começou tudo de novo.
     No quarto dia, ficou com preguiça, então falou:

  - Sexta-feira eu continuo, se não estiver cansado...

    E no fim, nada.

Aqui ele não mudou nada pois todas as nossas linhas tem um espaço no início e não um No :D

Apagar do início da linha até uma string

O comando

sed 's/^.*dia//'

Vamos testar em nosso arquivo

sed 's/^.*dia//' arquivo.txt 
  No início do início, era um nada.
, fez um rascunho à lápis.
, apagou e começou tudo de novo.
, ficou com preguiça, então falou:

  - Sexta-feira eu continuo, se não estiver cansado...

    E no fim, nada.

Apagar de uma string até o final da linha

O comando

sed 's/dia.*$//'

Vamos testar em nosso arquivo

sed 's/dia.*$//' arquivo.txt 
  No início do início, era um nada.
   No segundo 
    No terceiro 
     No quarto 

  - Sexta-feira eu continuo, se não estiver cansado...

    E no fim, nada.

Apagar a última string da linha

O comando

sed 's/ [^ ]\+ *$//g'

Vamos testar em nosso arquivo

sed 's/ [^ ]\+ *$//g' arquivo.txt 
  No início do início, era um
   No segundo dia, fez um rascunho à
    No terceiro dia, apagou e começou tudo de
     No quarto dia, ficou com preguiça, então

  - Sexta-feira eu continuo, se não estiver

    E no fim,

Colocar todas as linhas em uma só

O comando

sed ':a;$!N;s/\n//;ta;'

Vamos testar em nosso arquivo

sed ':a;$!N;s/\n//;ta;' arquivo.txt
  No início do início, era um nada.   No segundo dia, fez um rascunho à lápis.    No terceiro dia, apagou e começou tudo de novo.     No quarto dia, ficou com preguiça, então falou:  - Sexta-feira eu continuo, se não estiver cansado...    E no fim, nada.

Juntar a linha com a próxima

O comando

sed 'N;s/\n//'

Vamos testar em nosso arquivo

sed 'N;s/\n//' arquivo.txt
  No início do início, era um nada.   No segundo dia, fez um rascunho à lápis.
    No terceiro dia, apagou e começou tudo de novo.     No quarto dia, ficou com preguiça, então falou:
  - Sexta-feira eu continuo, se não estiver cansado...
    E no fim, nada.

Substituir caractere por outro até uma TAG

OBS: troca 'o' por 'x' até encontrar a primeira ','

O comando

sed ':a;s/^\([^,]\+\)o/\1x/;ta'

Vamos testar em nosso arquivo

sed ':a;s/^\([^,]\+\)o/\1x/;ta' arquivo.txt
  Nx inícix dx inícix, era um nada.
   Nx segundx dia, fez um rascunho à lápis.
    Nx terceirx dia, apagou e começou tudo de novo.
     Nx quartx dia, ficou com preguiça, então falou:

  - Sexta-feira eu cxntinux, se não estiver cansado...

    E nx fim, nada.

Substituir caractere por outro entre TAGs

OBS: troca 'o' por 'x' entre a segunda e terceira ','

O comando

sed ':a;s/^\([^,]*,[^,]\+\)o/\1x/;ta'

Vamos testar em nosso arquivo

sed ':a;s/^\([^,]*,[^,]\+\)o/\1x/;ta' arquivo.txt  No início do início, era um nada.
   No segundo dia, fez um rascunhx à lápis.
    No terceiro dia, apagxu e cxmeçxu tudx de nxvx.
     No quarto dia, ficxu cxm preguiça, então falou:

  - Sexta-feira eu continuo, se nãx estiver cansadx...

    E no fim, nada.

Substituir string por outra somente em certas linhas

OBS: substitui 'dia' por 'noite' somente em linhas que contém a string 'terceiro'

O comando

sed '/terceiro/s/dia/noite/g'

Vamos testar em nosso arquivo

sed '/terceiro/s/dia/noite/g' arquivo.txt
  No início do início, era um nada.
   No segundo dia, fez um rascunho à lápis.
    No terceiro noite, apagou e começou tudo de novo.
     No quarto dia, ficou com preguiça, então falou:

  - Sexta-feira eu continuo, se não estiver cansado...

    E no fim, nada.

Substituir string por outra somente em certas linhas II

OBS: substitui 'dia' por 'noite' nas linha que NÃO contém a string 'terceiro'

O comando

sed '/terceiro/!s/dia/noite/g'

Vamos testar em nosso arquivo

sed '/terceiro/!s/dia/noite/g' arquivo.txt
  No início do início, era um nada.
   No segundo noite, fez um rascunho à lápis.
    No terceiro dia, apagou e começou tudo de novo.
     No quarto noite, ficou com preguiça, então falou:

  - Sexta-feira eu continuo, se não estiver cansado...

    E no fim, nada.

Substituir a última ocorrência de uma string por outra

O comando

sed ':a;$!{N;ba;};s/\(.*\)dia/\1noite/'

Vamos testar em nosso arquivo

sed ':a;$!{N;ba;};s/\(.*\)dia/\1noite/' arquivo.txt
  No início do início, era um nada.
   No segundo dia, fez um rascunho à lápis.
    No terceiro dia, apagou e começou tudo de novo.
     No quarto noite, ficou com preguiça, então falou:

  - Sexta-feira eu continuo, se não estiver cansado...

    E no fim, nada.

Trocar a ordem das palavras (última vira primeira, penúltima vira segunda….)

OBS: se o seu arquivo tiver o caractere '§' troque o '§' do sed por outro carectere que não exista.

O comando

sed 's/^/§ /;:a;s/\(.*\)§ \+\([^ ]\+\)/\2 \1§/;ta;s/§//'

Vamos testar em nosso arquivo

sed 's/^/§ /;:a;s/\(.*\)§ \+\([^ ]\+\)/\2 \1§/;ta;s/§//' arquivo.txt
nada. um era início, do início No 
lápis. à rascunho um fez dia, segundo No 
novo. de tudo começou e apagou dia, terceiro No 
falou: então preguiça, com ficou dia, quarto No 
 
cansado... estiver não se continuo, eu Sexta-feira - 
 
nada. fim, no E 

Trocar a ordem das letras (igual ao comando rev)

O comando

sed 's/^/§/;:a;s/\(.*\)§\(.\)/\2\1§/;ta;s/§$//'

Vamos testar em nosso arquivo

sed 's/^/§/;:a;s/\(.*\)§\(.\)/\2\1§/;ta;s/§$//' arquivo.txt
.adan mu are ,oicíni od oicíni oN  
.sipál à ohnucsar mu zef ,aid odnuges oN   
.ovon ed odut uoçemoc e uogapa ,aid oriecret oN    
:uolaf oãtne ,açiugerp moc uocif ,aid otrauq oN     

...odasnac revitse oãn es ,ounitnoc ue arief-atxeS -  

.adan ,mif on E  

Trocar de maiúsculas para minúsculas

O comando

sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÉÊÍÓÔÕÚÇ/abcdefghijklmnopqrstuvwxyzàáâãéêíóôõúç/'

Vamos testar em nosso arquivo

sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÉÊÍÓÔÕÚÇ/abcdefghijklmnopqrstuvwxyzàáâãéêíóôõúç/' arquivo.txt
  no início do início, era um nada.
   no segundo dia, fez um rascunho à lápis.
    no terceiro dia, apagou e começou tudo de novo.
     no quarto dia, ficou com preguiça, então falou:

  - sexta-feira eu continuo, se não estiver cansado...

    e no fim, nada.

Trocar de minúsculas para maiúsculas

O comando

sed 'y/abcdefghijklmnopqrstuvwxyzàáâãéêíóôõúç/ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÉÊÍÓÔÕÚÇ/'

Vamos testar em nosso arquivo

sed 'y/abcdefghijklmnopqrstuvwxyzàáâãéêíóôõúç/ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÉÊÍÓÔÕÚÇ/' arquivo.txt
  NO INÍCIO DO INÍCIO, ERA UM NADA.
   NO SEGUNDO DIA, FEZ UM RASCUNHO À LÁPIS.
    NO TERCEIRO DIA, APAGOU E COMEÇOU TUDO DE NOVO.
     NO QUARTO DIA, FICOU COM PREGUIÇA, ENTÃO FALOU:

  - SEXTA-FEIRA EU CONTINUO, SE NÃO ESTIVER CANSADO...

    E NO FIM, NADA.

Referências