SuperSed.sh

Publicado por Sandro Marcell 11/09/2007

[ Hits: 4.513 ]

Homepage: http://sanmarcell.wordpress.com

Download supersed.sh




Simples script que mostra o poder e versatilidade do Sed (Stream Editor).

  



Esconder código-fonte

#!/bin/sh
#
# Emulando alguns comandos com o sed.
# (Mostrando um pouco da versatilidade e poder desta incrível ferramenta!)
#
# Sandro Marcell (sandro_marcell@yahoo.com.br)
#
# Para acessar o manual completo do sed, num terminal digite:
# info sed
#
# Para informações sobre os comandos emulados, digite:
# man [comando]

# Checando parâmetros:
[ $# -le 1 ] || [ $# -gt 2 ] && {
sed : << FINAL
Uso: $0 -[ctrpwng[tr]] arquivo
Onde:
-c  
    Emula o cat (Mostra conteúdo dum arquivo)
-t 
    Emula o tac (Mostra conteúdo dum arquivo invertendo ordem das linhas)
-r 
    Emula o rev (Mostra conteúdo dum arquivo invertendo caracteres)
-p
    Emula o paste (Une pares de linhas lado a lado)
-w 
    Emula o wc -l (Conta a quantidade de linhas dum arquivo)
-n 
    Emula o nl -ba (Numera todas as linhas dum arquivo)
-g 
    Emula o grep . (Remove linhas em branco dum arquivo)
-tr
    Emula o tr a-z A-Z (Converte caracteres minúsculos para maiúsculos)
FINAL
exit
}

# Testes condicionais:
[ ! -e $2 ] && {
sed : << FINAL
[$2] Arquivo não encontrado.
FINAL
exit
} || [ ! -r $2 ] && {
sed : << FINAL
[$2] Sem permissão para visualizar.
FINAL
exit
}

# Capturando opções:
case $1 in
   -c | -C) {
   # Emulando o cat:
   sed : < $2
   sed : <<- FINAL
   ==================
   sed emulando o cat
   ==================
   FINAL
};;
   -t | -T) {
   # Emulando o tac:
   sed '{
   1!G
   h
   $!d}' < $2 > /dev/stdout
   sed : <<- FINAL
   ==================
   sed emulando o tac
   ==================
   FINAL
};;
   -r | -R) {
   # Emulando o rev:
   sed '{
   /\n/!G
   s/\(.\)\(.*\n\)/&\2\1/
   //D
   s/.//}' < $2 > /dev/stdout
   sed : <<- FINAL
   ==================
   sed emulando o rev
   ==================
   FINAL
};;
        -p | -P) {
   # Emulando o paste:
   sed '{
   N
   s/\n/ /}' < $2 > /dev/stdout
   sed : <<- FINAL
   ====================
   sed emulando o paste
   ====================
   FINAL
};;
        -w | -W) {
   # Emulando o wc -l:
   sed -n '$=' < $2 > /dev/stdout
   sed : <<- FINAL
   ====================
   sed emulando o wc -l
   ====================
   FINAL
};;
   -n | -N) {
   # Emulando o nl -ba:
   sed = $2 | sed 'N ; s/\n/\t/'
   sed : <<- FINAL
   =====================
   sed emulando o nl -ba
   =====================
   FINAL
};;
   -g | -G) {
   # Emulando o grep '.':
   sed '/^$/d' < $2 > /dev/stdout
   sed : <<- FINAL
   =====================
   sed emulando o grep .
   =====================
   FINAL
};;
   -tr | -TR) {
   # Emulando o tr a-z A-Z:
   sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \
   < $2 > /dev/stdout
   sed : <<- FINAL
   =========================
   sed emulando o tr a-z A-Z
   =========================
   FINAL
};;
   *) {
   # Opção inválida:
   sed : <<- FINAL
   [$1] Opção inválida.
   FINAL
};;
esac
# Fim

Scripts recomendados

Monta CDROM

Gravando 2 CDS ao mesmo tempo

rc.squid start|stop|restart Servidor Proxy

Atualizando pacotes no Ubuntu

plaskill


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts