SuperSed.sh
Publicado por Sandro Marcell 11/09/2007
[ Hits: 4.739 ]
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
Renomear seu pendrive (Debian)
Verificando espaço de Disco usando Dialog
Nenhum comentário foi encontrado.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Mint Xfce não mantém a conexão no wi-fi (2)
Problemas com Driver NVIDIA (5)
Warcraft II Remastered no Linux? (8)









