Questão de Sistemas Operacionais — Geral — VUNESP 2024
Sistemas Operacionais›Geral
Código
vu212432
Banca
VUNESP
Órgão
EsFCEx
Ano
2024
Cargo
CFO/QC ( )
O seguinte comando do sistema operacional Linux egrep ʹ^.{0,9}$ʹ /etc/passwd tem por finalidade buscar no arquivo /etc/passwd linhas
Aque contêm qualquer dígito decimal.
Bque contêm os dígitos 0 ou 9.
Cque possuem de 0 a 9 caracteres.
Diniciadas pelos símbolos ^ (circunflexo) ou . (ponto) seguidas por um dígito decimal e terminadas com o símbolo $ (cifrão).
Eque contêm os símbolos ^ (circunflexo), . (ponto) ou $ (cifrão) intercalados por um ou mais dígitos decimais.
Revelar gabarito e comentário▾
GabaritoC — que possuem de 0 a 9 caracteres.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Expressões regulares no Linux: egrep e quantificadores
Gabarito: letra C. O comando egrep '^.{0,9}$' /etc/passwd busca linhas que possuem de 0 a 9 caracteres, pois ^ ancora o início da linha, $ ancora o fim, . casa qualquer caractere (exceto quebra de linha) e {0,9} é o quantificador que repete o elemento anterior de 0 a 9 vezes. A alternativa C é a única que traduz corretamente essa expressão regular.
O egrep é uma variação do grep que interpreta padrões como expressões regulares estendidas (ERE). A diferença crucial entre o grep básico e o egrep está no conjunto de metacaracteres suportados: o egrep entende quantificadores como +, ?, {n,m} e alternância | sem necessidade de escape, enquanto o grep tradicional (BRE) exige barras invertidas para esses mesmos recursos. Na prática, o egrep é equivalente a grep -E, e é essa sintaxe estendida que permite escrever {0,9} diretamente.
Vamos decompor a expressão ^.{0,9}$ peça por peça. O circunflexo ^ é uma âncora que fixa o casamento ao início da linha — sem ele, o padrão poderia casar em qualquer posição do texto. O cifrão $ é a âncora de fim de linha. O ponto . é um metacaractere que casa com qualquer caractere único, com uma exceção importante: por padrão, não casa com quebra de linha. Os quantificadores {0,9} indicam que o elemento anterior (o ponto) deve aparecer entre 0 e 9 vezes. Juntando tudo: a linha inteira, do início ao fim, deve ser composta por no máximo 9 caracteres quaisquer — ou seja, linhas com 0 a 9 caracteres.
Um detalhe sutil: o quantificador {0,9} inclui o zero, o que significa que uma linha vazia também satisfaz o padrão. Isso é tecnicamente correto, embora no arquivo /etc/passwd dificilmente existam linhas vazias. O comando, portanto, listaria todas as linhas do arquivo que tenham comprimento entre 0 e 9 caracteres — um filtro por tamanho de linha, não por conteúdo.
A pegadinha clássica desta questão é confundir os metacaracteres de expressão regular com caracteres literais. O candidato desatento lê ^, . e $ como símbolos a serem buscados no texto, quando na verdade são operadores de ancoragem e coringa. A banca explora exatamente essa confusão nas alternativas D e E, que tratam os metacaracteres como se fossem caracteres comuns. Guarde a distinção: âncoras (^ e $) e coringa (.) são metacaracteres; para buscá-los como texto literal, seria necessário escapá-los com barra invertida (\^, \., \$).
1^ ancora início
2. casa qualquer caractere
3{0,9} repete 0 a 9 vezes
4$ ancora fim
5Linhas com 0 a 9 caracteres
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Afirma que o comando busca linhas que contêm qualquer dígito decimal. O padrão ^.{0,9}$ não menciona dígitos — o ponto casa com qualquer caractere, não apenas números. Para buscar dígitos, a expressão usaria [0-9] ou \d. A alternativa confunde o coringa universal . com uma classe de caracteres numéricos.
Alternativa B — ❌ Incorreta
Diz que o comando busca linhas que contêm os dígitos 0 ou 9. Essa leitura interpreta {0,9} como uma lista de caracteres, mas na verdade é um quantificador que indica repetição de 0 a 9 vezes do elemento anterior (o ponto). A alternativa confunde a sintaxe de quantificação com uma classe de caracteres [09].
Alternativa C — ✅ Correta ⟵ GABARITO
A expressão ^.{0,9}$ casa exatamente linhas com 0 a 9 caracteres: ^ ancora o início, $ ancora o fim, . casa qualquer caractere e {0,9} repete de 0 a 9 vezes. É a tradução literal e correta do padrão.
Alternativa D — ❌ Incorreta
Interpreta ^, . e $ como caracteres literais a serem buscados. Na verdade, são metacaracteres: ^ ancora o início da linha, $ ancora o fim e . é coringa para qualquer caractere. Para buscar esses símbolos como texto, seria necessário escapá-los (\^, \., \$). A alternativa ignora completamente a função de metacaractere.
Alternativa E — ❌ Incorreta
Também trata ^, . e $ como caracteres literais, além de inventar a exigência de dígitos decimais intercalados. O padrão não contém nenhuma classe de dígitos e os símbolos são operadores, não caracteres a buscar. A alternativa é duplamente errada: pela leitura literal dos metacaracteres e pela introdução de dígitos que não existem na expressão.
NÃO CAIA NESSA!
A banca explora a confusão entre metacaracteres e caracteres literais. Nas alternativas D e E, ^, . e $ são tratados como símbolos a buscar, quando na verdade são âncoras e coringa. Lembre-se: em expressões regulares, ^ e $ nunca aparecem como texto — eles marcam posição. Para buscar um circunflexo literal, você escreveria \^.
PEGA ESSA DICA!
Decore os três papéis: ^ = início de linha, $ = fim de linha, . = qualquer caractere. E o quantificador {n,m} sempre se refere ao elemento anterior. Na prova, decomponha a expressão da direita para a esquerda: primeiro o que casa (o ponto), depois quantas vezes ({0,9}), e só então as âncoras.