Pesquisa de padrão de string

Pesquisa de padrão de string

Eu sou novo no Linux. Quero ser colocado como administrador do sistema. Assisti a uma entrevista na Amazon. Eles me pediram para escrever um cmd para encontrar a string que começa com 's' e termina com 'a' em um arquivo. Eu sei que temos que usar grep, mas não sabemos as coisas reais. Além disso, eles também perguntaram como funciona o grep. Alguém pode resumir uma resposta para isso.

desde já, obrigado

Responder1

grep pesquisa nos ARQUIVOS de entrada nomeados (ou na entrada padrão se nenhum arquivo for nomeado ou se um único hífen-menos (-) for fornecido como nome do arquivo) por linhas que contenham uma correspondência com o PATTERN fornecido. Por padrão, grep imprime as linhas correspondentes

Comandos grep

Grep e suas opções

-v  =   non-matching lines
-c  =   count of matching  lines
-i  =   Ignore  case
-r  =   Read all  files  under  each  directory
-l  =   list the file which contain the searching keyword
 ^      =       Search the Starting word of a file
.$      =       Search the end word of a file
^$      =       Search the empty lines in a file

Encontre todas as linhas que correspondem a uma palavra-chave específica em um arquivo.

grep sysadmin /etc/passwd

Exibição com números

grep -nv nologin /etc/passwd

Para evitar a palavra-chave e pesquisar outras

grep -v sysadmin /etc/passwd

Para contar quantas linhas correspondem às palavras-chave que procuramos

grep -c sysadmin /etc/passwd

Para pesquisar texto ignorando o caso

grep -i sysadmin /etc/passwd

Pesquise todos os arquivos /homee seus subdiretórios em busca de texto que corresponda a um padrão específico e imprima as linhas correspondentes

grep -ri sysadmin /home/

Pesquise todos os arquivos /homee seus subdiretórios em busca de texto que corresponda a um padrão específico e liste os arquivos que o contêm

grep -ril sysadmin /home/

Para procurar um determinado IP mencionado entre muitos IPs. O -Fgarante que .correspondam a caracteres literais ., sem ele corresponderiam a qualquer caractere.

grep -F "192.168.1.10" /var/log/syslog

Para procurar uma linha que comece comFeb

grep ^Feb /var/log/syslog

Para procurar uma linha que termine comqueue

grep queue$ /var/log/mail.log

Para contar as linhas vazias em um arquivo (linhas contendo espaços em branco não serão contadas)

grep -c ^$ /var/log/mail.log

Procure uma string dentro de todos os arquivos de um diretório e seus subdiretórios

grep -r "root" .

Responder2

Experimente este comando GNU grep com -Pa opção (Perl-regex),

 grep -oP '\bs.*a\b' file

Explicação:

\b    # Matches the word boundary(ie, match between a word character and a non word character)
s     # Starting character would be a literal s.
.*    # Matches any character zero or more times.
a     # Matches a literal a.
\b    # Matches the word boundary(ie, match between a word character and a non word character)

informação relacionada