Procurando um padrão num arquivo

Publicado por Sandro Marcell 02/08/2007

[ Hits: 5.346 ]

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

Ligar máquinas virtuais Xen seguindo ordem de criação

estrutura para menu

Correção do arquivo status

Ping mesmo com firewall

Plugin BACULA


  

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