Procurando um padrão num arquivo

Publicado por Sandro Marcell 02/08/2007

[ Hits: 4.864 ]

Homepage: http://sanmarcell.wordpress.com

Download pad.sh




Simples script que procura a ocorrência de determinado padrão num arquivo.

Ele retorna o número total de linhas do arquivo, a quantidade de ocorrências do padrão e ainda mostra em quais linhas o padrão ocorre.

  



Esconder código-fonte

#!/bin/sh
#
# Descobrindo posição dum padrão num arquivo.
#
# Sandro Marcell (sandro_marcell@yahoo.com.br)
#
# Uso: nome_script [padrão] arquivo
# Onde:
# padrão = a palavra que se procura.
# arquivo = onde procurar o padrão.
#
# Sobre o uso do Sed
#
# sed -n '$=' arquivo
# Conta a quantidade linhas do arquivo.
#
# sed -n "/padrão/=" arquivo
# Procura o padrão no arquivo e retorna o número da linha em que ele ocorre.
#
# (1) sed ':A ; $!N ; s/\n/ /g ; tA ; (2) s/ /,/g'
# 1 = Ordena-se a numeração das linhas encontradas na horizontal;
# 2 = Acrescenta-se vírgulas.
#
# sed :
# Emulando o comando cat.

# Checando parâmetros:
[ $# -le 1 ] || [ $# -gt 2 ] && echo "Uso: $0 [padrão] arquivo" && exit

# Testes condicionais:
[ ! -e $2 ] && echo "-> Arquivo não encontrado." && exit
[ ! -r $2 ] && echo "-> Sem permissão de visualização." && exit

# O padrão é a variável $1 e o arquivo é $2:
PDR=$(sed -n "/$1/=" $2 | sed ':A ; $!N ; s/\n/ /g ; tA ; s/ /,/g')

# Checando se o padrão existe no arquivo:
[ "$PDR" = "" ] && echo "[$1] padrão não encontrado em: $2" && exit

# Resultado na tela:
sed : << FIM

$2: possui $(sed -n '$=' $2) linhas.

$(sed -n "/$1/=" $2 | wc -w) ocorrência(s) do padrão [$1] em $2

Há ocorrência(s) do padrão na(s) seguinte(s) linha(s):
$PDR

FIM
# Fim

Scripts recomendados

Instalar última versão do Java automaticamente em "todas as plataformas"

consistir variável numérica ou alfa-numérica

Diferença entre datas

Free VPN - download de VPNs do vpnbook.com

Script para encontrar arquivos .wam, .mpeg


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts