Linux grep dicas e truques para o dia a dia

GNU/Linux grep dicas e truques

---

Realmente depois de um tempo, o usuário Linux precisa muito do grep. Ele(a) tem anos de arquivos em backup, na nuvem, em HDs, anotados em dezenas de espécies de arquivos e diretórios diferentes que são mil, dois, três mil arquivos (pessoais), 800, 1000, 2000 scripts, 4, 8, 12, 60 mil linhas de código, 2000 aliases (alguns enormes) e mais trabalho chegando todo dia. Novas idéias que combinam bem com um trecho de código escrito 3 anos atrás e só se lembra de um pedacinho dele... Affff maria! Aí vem o grep para lhe salvar da mais profunda insanidade, porque quando tudo está lindo e fluindo bem, o ser humano sem querer tende a se perder na selva de coisas que criou. Fomos feitos para isto. Isto é tão normal.

---

SINTAXE DE COMANDO GREP:

1) grep 'palavra' nome_do_arquivo

2) grep 'string1 string2' nome_do_arquivo

3) cat outro_arquivo | grep 'algo'

4) comando | grep 'algo'

5) comando opção1 | grep 'informação'

6) grep --color 'info' nome_do_arquivo

---

Encontrando comandos em seu histórico. A maioria dos usuários fará algo assim:

history |grep

---

Conte e exiba os comandos mais usados em seu histórico.

history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq

---

O primeiro desses truques permite criar uma lista de arquivos que contenham qualquer sequência que você esteja procurando.
Ele usa a opção -l (lista apenas os nomes dos arquivos, não o conteúdo correspondente) mais a opção -r para repetir através de subdiretórios.
Isso pode ajudá-lo a encontrar arquivos que você pode estar procurando, sem distraí-lo com todos os motivos pelos quais determinados arquivos corresponderam aos seus critérios de pesquisa.

Exemplo:

grep -rl "string que quer encontrar" *

---

Outro truque útil do grep no Linux permite que você especifique uma expressão regular Perl no seu termo de pesquisa. Neste exemplo, podemos dar ao grep uma expressão que permita que ele corresponda a várias seqüências de caracteres, como egrep. Pode ficar muito mais complicado que os exemplos mostrados, mas aqui está a sintaxe básica:

grep -P "enquanto|para" *

grep -P 'foto\.gif' *

---

Você também pode combinar o grep com os comandos find para obter algumas extrações úteis de texto dos arquivos de destino.

find . -name "*.r" -exec grep "rho" '{}' \; -print

---

Obviamente, um dos truques grep mais úteis que encontrei até agora é o que fornece algum contexto junto com a sua descoberta. Em vez de exibir apenas as linhas que contêm o texto específico que você estava procurando, você pode imprimir as linhas que aparecem antes e depois das linhas correspondentes - geralmente necessárias para determinar se "correspondência" é realmente o que você está procurando.

Você pode especificar quantas linhas deseja ver antes da sequência correspondente com a opção "B" (para "antes") e o número de linhas após a correspondência com a opção "A" (para "depois").

grep -B 2 -A 2 echo *

---

Usar grep para buscar arquivo?

grep boo /etc/passwd

grep -i "boo" /etc/passwd

---

Usar grep recursivamente?

grep -r "192.168.1.5" /etc/

---

Usar grep para buscar apenas palavras?

Quando você pesquisa boo, o grep corresponde a fooboo, boo123 etc. Você pode forçar o grep a selecionar apenas as linhas que contêm correspondências que formam palavras inteiras, ou seja, correspondem apenas à palavra boo:

grep -w "boo" /caminho/para/arquivo

---

Contar a linha quando as palavras forem correspondidas? O grep pode relatar o número de vezes que o padrão foi correspondido para cada arquivo usando a opção -c (count):

grep -c 'muu' /caminho/para/arquivo

Observe também que você pode usar a opção -n, que faz com que o grep preceda cada linha de saída com o número da linha no arquivo de texto do qual foi obtida:

grep -n 'foo' /caminho/para/arquivo

---

Grep partida invertida? Você pode usar a opção -v para imprimir inverte a correspondência; isto é, corresponde apenas às linhas que não contêm a palavra especificada. Por exemplo, imprima todas as linhas que não contêm a barra de palavras:

grep -v bar /caminho/para/arquivo

---

Pipes Linux e comando grep? Comando grep é frequentemente usado com pipes. Por exemplo, imprimir o nome dos dispositivos de disco rígido:

dmesg | egrep '(s|h)d[a-z]'

---

Modelo nome da cpu:

cat /proc/cpuinfo | grep -i 'Model'

---

O comando acima pode ser usado sem o shell pipe:

grep -i 'Model' /proc/cpuinfo

---

Como faço para listar apenas os nomes dos arquivos correspondentes? Use a opção -l para listar o nome do arquivo cujo conteúdo mencione main ():

grep -l 'main' *.c

Finally, you can force grep to display output in colors:

grep --color vivek /etc/passwd

---

Grep é usado principalmente para filtrar a saída de um comando para restringir o que o usuário está procurando.

grep "dark" rgb.txt

---

Encontre uma instância de uma palavra com um número depois dela.

ls | grep "ppm[0-9]"

---

Exclua todos os arquivos mkv em um diretório usando grep e xargs. Você deve ter cuidado com este comando, isso não solicitará antes de excluir arquivos.

ls | grep "mkv" | xargs rm

---

Como retornar os nomes dos arquivos que não contêm uma determinada sequência de pesquisa.

grep -L "linux" *.txt

---

Imprima uma lista alfabética classificada de todos os arquivos que correspondem a uma determinada string ou palavra.

ls | grep by | sort | uniq -c | sort -n

---

Contar a quantidade de arquivos com um certo nome:

ls | grep log | wc -l

---