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 /home
e 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 /home
e 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 -F
garante 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 -P
a 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)