O comando grep pode ser utilizado para procurar uma determi...
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