SuperSed.sh
Publicado por Sandro Marcell 11/09/2007
[ Hits: 4.788 ]
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
Comandos e estruturas básicas de shell script
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Como fazer a instalação do Samba
Como fazer a conversão binária e aplicar as restrições no Linux
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (40)
Pfsense inacessivel após um periodo de tempo (2)









