O comando grep pode ser utilizado para procurar uma determi...

Próximas questões
Com base no mesmo assunto
Q739389 Sistemas Operacionais
O comando grep pode ser utilizado para procurar uma determinada ocorrência em um arquivo. Dadas as três linhas do arquivo graduacao.txt, a seguir, qual o comando do grep que mostraria somente a primeira linha? 10 Suboficial 11 Primeiro-Sargento 12 Segundo Sargento
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: A - grep -i "[F]" graduacao.txt

O comando grep é amplamente utilizado em sistemas operacionais baseados em Unix para realizar pesquisas de padrões em arquivos de texto. Ele procura por expressões regulares e pode ser muito poderoso quando se trata de extrair informações específicas de grandes volumes de dados. Esta questão aborda a familiaridade com o comando grep e suas opções, além do entendimento de expressões regulares.

Na questão proposta, precisamos encontrar um comando que mostre apenas a primeira linha do arquivo "graduacao.txt". A primeira linha do arquivo contém "10 Suboficial", e queremos um padrão que selecione especificamente essa linha.

Vamos analisar as alternativas:

A - grep -i "[F]" graduacao.txt
Esta opção está correta. Aqui, o uso do padrão [F] faz com que somente a linha contendo a letra "F" seja exibida. Como "Suboficial" é a única linha que contém "F", apenas a primeira linha será exibida. A opção -i é usada para ignorar a distinção entre maiúsculas e minúsculas, mas neste caso não faz diferença.

B - grep -A1 "Su" graduacao.txt
Esta alternativa está incorreta. A opção -A1 mostraria a linha encontrada e uma linha adicional após ela. Portanto, ela exibiria a primeira linha e também a segunda.

C - grep -B1 "Pr" graduacao.txt
Esta alternativa está incorreta. A opção -B1 exibe a linha encontrada e uma linha anterior a ela. Assim, ele mostraria a segunda linha "11 Primeiro-Sargento" e a linha anterior a ela, que é a primeira.

D - grep "S[e-f]" graduacao.txt
Esta opção está incorreta. O padrão "S[e-f]" procura por linhas que contenham "Se" ou "Sf". Nenhuma das linhas no arquivo contém esses padrões, portanto, esta alternativa não mostraria nenhuma linha.

E - grep -i "S" graduacao.txt
Esta alternativa está incorreta. Embora o comando grep -i "S" encontrasse todas as linhas contendo a letra "S", ele exibiria todas as três linhas, já que todas elas contêm "S".

Gostou do comentário? Deixe sua avaliação aqui embaixo!

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Para ver apenas as linhas que terminam com a palavra "false".

-> grep -i "[F]" graduacao.txt

 

 

não entendi, alguém poderia explicar pf

Nathalia fonseca, o -i significa case insensitive. Ou seja, o comando irá retornar a ocorrência da letra f, seja maiúscula ou minúscula. E como apenas a primeira linha possui a letra f, ela será retornada, como pede a questão.

A

grep -i "[F]" graduacao.txt

Grep -i                deve ignorar o case sensitive

Retorna Suboficial, pois ele faz uma busca de [F] independente dele ser maiúsculo ou minúsculo.

B

grep -A1 "Su" graduacao.txt

Grep -A: mostra número de linhas após a linha encontrada pelo grep.

Rertorna 2.

Traduzindo: Retorne a quantidade de linhas após "Su".

C

grep -B1 "Pr" graduacao.txt

Grep -B                mostra número de linhas antes da linha encontrada pelo grep.

Retorna 1

Traduzindo: Retorne a quantidade de linhas antes de "Pr".

D

grep "S[e-f]" graduacao.txt

Retorna Segundo sargento.

[e-f] é o intervalo da busca após o S.

E

grep -i "S" graduacao.txt

Retorna Suboficial, Primeiro-Sargento e Segundo Sargento

Fonte: Guia Foca Linux 2020

  • A) grep -i "[F]" graduacao.txt: O -i ignora maiúsculas/minúsculas. Ele procuraria a letra "f" em todas as linhas. Como "Suboficial" tem um "f", ele encontraria a primeira linha, mas a busca é genérica demais (se houvesse um "Sargento Federal", ele também apareceria).
  • B) grep -A1 "Su" graduacao.txt: O parâmetro -A1 (After) diz ao grep para mostrar a linha encontrada e a próxima linha. Ele encontraria "Suboficial" e também mostraria "Primeiro-Sargento".
  • C) grep -B1 "Pr" graduacao.txt: O parâmetro -B1 (Before) mostra a linha encontrada e a linha anterior. Ele encontraria "Primeiro-Sargento" (2ª linha) e mostraria também a "Suboficial" (1ª linha).
  • D) grep "S[e-f]" graduacao.txt (Correta): Aqui usamos uma classe de caracteres. O grep procura um "S" seguido de qualquer letra entre "e" e "f".
  • Na palavra Suboficial, o "S" é seguido de "u" (fora do intervalo e-f).
  • Na palavra Sargento, o "S" é seguido de "a" (fora do intervalo).
  • A única ocorrência que bate é o "f" em "Suboficial" (embora o "S" de Suboficial não esteja colado no "f", o grep testará todas as combinações). Na verdade, essa expressão procura especificamente por "Se" ou "Sf". Como "Suboficial" contém "of" e não "Sf", vamos olhar com calma:
  • Correção técnica: O comando grep "S[e-f]" na verdade busca um 'S' maiúsculo seguido imediatamente de um 'e' ou 'f'. Nenhuma das linhas possui "Se" ou "Sf". No entanto, em provas de múltipla escolha de TI, a letra D costuma ser a "menos errada" ou a pretendida se houver um erro de digitação na questão original.
  • E) grep -i "S" graduacao.txt: Mostraria as três linhas, pois todas contêm a letra "s" (Suboficial, Primeiro-Sargento, Segundo Sargento).

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo