SuperSed.sh
Publicado por Sandro Marcell 11/09/2007
[ Hits: 4.790 ]
Homepage: http://sanmarcell.wordpress.com
Simples script que mostra o poder e versatilidade do Sed (Stream Editor).
#!/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
TimerDown v1.0 - timer para desligar o PC
Montar Imagem ISO no Nautilus-Script ou Nautilus-Actions
Script para backup de usuários
Nenhum comentário foi encontrado.
Bluefin - A nova geração de ambientes de trabalho Linux
Como atualizar sua versão estável do Debian
Cirurgia para acelerar o openSUSE em HD externo via USB
Pós-instalação do elementary OS 8.1
Quer auto-organizar janelas (tiling) no seu Linux? Veja como no Plasma 6 e no Gnome
Copiando caminho atual do terminal direto para o clipboard do teclado
Conky não mostra temperaturas da CPU no notebook (9)
O WiFi não reconhece minha rede depois que o processo de suspensão é r... (1)









