Procurando um padrão num arquivo

Publicado por Sandro Marcell 02/08/2007

[ Hits: 5.253 ]

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

Comparar recursivamente duas pastas

Escolha a versão do PHP

COMO CRIAR UM MENU PARA SCRIPT EM SHELL NO LINUX, DEBIAN, UBUNTU E ETC

Envio de backps de bancos por ftp com notificação por email

Criar usuários com ponto (nome.usuario) no Slackware


  

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