SuperSed.sh

Publicado por Sandro Marcell 11/09/2007

[ Hits: 4.514 ]

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

Interface para tarefas básicas

System Software 2.1 - Instale e remova repositórios e programas de forma simples

Backup de varias pastas

Reconhecendo e abrindo midia

Theme para fluxbox


  

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