
Aprendendo Shell Scripting usando o comando terminal: grep
O comando "grep" em sistemas operacionais livres como GNU / Linux é um comando muito valioso e útil. Seu nome vem da frase em inglês: «Global Regular Expression Print» e é usado para realizar a tarefa de encontrar, combinar e exibir um padrão de pesquisa ou uma expressão regular de um (1) arquivo ou vários arquivos de texto.
Basicamente, o comando «grep» procura o padrão indicado nos parâmetros do comando de comando e imprime os resultados obtidos seguindo as indicações dos parâmetros do comando de comando., que pode ser: a Tela ou um Arquivo de saída.
Introdução ao comando "grep"
Já em outras publicações anteriores do mesmo blog, como esta «Alguns comandos básicos em ...»Comentamos sobre o uso básico deste ótimo comando, mas Nesta publicação, veremos um uso mais intermediário e avançado do comando "grep" em comandos de comando funcionais e úteis que podem facilitar certas tarefas reais. dentro de nossos scripts de shell ou diretamente no terminal para obter um resultado mais imediato em uma tarefa específica a ser executada.
Exemplos práticos
Veja nossa posição / localização
impressão o conteúdo do nosso diretório atual usando uma árvore de diretório gráfica:
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
Exemplo:
Gere uma senha aleatória de 30 caracteres de comprimento
Gere strings aleatórias dentro de / dev / urandom e, em seguida, selecione e exiba um único (1) usando a filtragem com o comando «grep» para apenas caracteres alfanuméricos, com a condição do tamanho dos primeiros 30 caracteres, eliminando todas as alimentações de linha .
strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 30 | tr -d '\n'; echo
Exemplo:
Gere um resumo gráfico das conexões
Visualize de forma gráfica (tabela) e resumida a quantidade de conexões de rede internas e externas detectadas pelo comando "netstat" de um host em um determinado momento.
netstat -an | grep ESTABLISHED | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | awk '{ printf("%s\t%s\t",$2,$1) ; for (i = 0; i < $1; i++) {printf("*")}; print "" }'
Exemplo:
Também pode ser utilizado para gerar uma tabela resumo do número de conexões por tipo delas, conforme mostrado a seguir:
netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -c
Exemplo:
Encontre uma string (padrão) dentro de um caminho
Localize e exiba todas as correspondências de um padrão em nomes de arquivo ou conteúdo de arquivo. O uso de parâmetros para conseguir isso são: -R (Recorrência para subdiretórios), -n (Mostrar números de linha de correspondências), -i (Ignorar maiúsculas e minúsculas), -s (Suprimir 'não existem mensagens "E" não pode ser lido "), -I (Ignora binários na pesquisa).
grep -RnisI *
Ele também pode ser usado de uma forma mais avançada se for usado em um prompt de comando com o comando "find" para localizar um padrão em um tipo de arquivo predefinido. como mostrado abaixo:
find /opt/MilagrOS -name "*.txt" -exec grep -RnisI "MilagrOS" {} \;
Conheça a quantidade de dados na memória RAM
Isso é útil para saber exatamente quantos dados (informações) estão esperando para serem gravados no disco rígido e é necessário forçar a reinicialização ou desligamento de um computador.
grep ^Dirty /proc/meminfo
Conheça nosso endereço IP WAN
É sempre muito útil saber nosso IP WAN automaticamente do terminal e, em seguida, passar esse parâmetro para outra tarefa automatizada. Este exemplo usa o serviço DynDNS para obtê-lo.
curl -s http://checkip.dyndns.org/ | grep -o "[[:digit:].]\+"
Liste o equipamento conectado a um segmento de rede
Usando um loop for com o comando "ping" e filtrando o resultado com o comando "grep", podemos validar nossos computadores conectados à rede com o serviço de ping habilitado sem a necessidade da ferramenta NMap.
for i in {1..10}; do ping -c 1 -W 1 192.168.0.$i | grep 'from'; done
Exemplo:
Para listar o campo de endereço IP rastreado, você pode fazer um uso mais avançado desta linha, filtrando os resultados do comando «grep» usando os comandos «awk» e «cut», conforme mostrado abaixo:
for i in {100..110}; do ping -c 1 -W 1 192.168.0.$i | grep 'from'; done | awk '{ print $4 }' | cut -d ":" -f 1
Exemplo:
Estes exemplos de linhas de comando usando o comando grep. E eles são usados para serem usados diretamente do console ou indiretamente, inserindo-os em um script (tarefa automatizada).
Na próxima postagem sobre Shell Scripting, exploraremos outros comandos.
Se você quiser aprender um pouco mais sobre o comando «grep», visite este link «DEBIAN Wiki»E se você quiser aprender mais sobre Shell Scripting em nosso próprio Blog, você pode conferir nossas outras publicações sobre o assunto, clicando aqui: Scripting em FromLinux
O artigo é ótimo, muito obrigado.
De nada um prazer! Agora vem um com o comando Sed.