Procurando um padrão num arquivo

Publicado por Sandro Marcell 02/08/2007

[ Hits: 5.365 ]

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

Criando Máquina Virtual

Removendo kernels antigos no Ubuntu

Player de música em Shell com Yad

Pós instalação para Debian 10, Ubuntu 18.04, Ubuntu 20.04, Fedora 31/Fe

Script para controle do Squid e firewall


  

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