Pular para o conteúdo principal

Questão de Sistemas Operacionais — Comandos — Quadrix 2024

Sistemas OperacionaisComandos
Código
qg347492
Banca
Quadrix
Órgão
CFP
Ano
2024
Nível
Médio
Cargo
Técnico Administrativo - Suporte Técnico em Informática

Em um sistema Linux, um psicólogo precisou analisar dados armazenados em um arquivo chamado pacientes.txt, que apresenta informações sensíveis. Antes de compartilhar o arquivo com sua equipe, ele decidiu remover todas as linhas que apresentam a palavra “confidencial”.


Com base nessa situação hipotética, julgue o item a seguir.

Para remover todas as linhas que contêm a palavra “confidencial”, o psicólogo deve fazer uso do comando grep “confidencial” | pacientes. txt.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

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”.

Comandos de texto e filtros no Linux: grep e redirecionamento

Gabarito: ERRADO. O comando apresentado está incorreto porque o grep não remove linhas — ele apenas filtra e exibe as linhas que correspondem ao padrão. Para remover linhas que contêm uma palavra, o comando correto seria grep -v "confidencial" pacientes.txt (a opção -v inverte a seleção, mostrando apenas as linhas que não contêm o padrão). Além disso, a sintaxe grep "confidencial" | pacientes.txt está errada: o arquivo deve ser passado como argumento ao grep, não como entrada de um pipe, e o grep não altera o arquivo original.

O grep é um dos comandos mais utilizados no Linux para busca em arquivos de texto. Seu nome vem de global regular expression print — ou seja, ele imprime (exibe) as linhas que casam com uma expressão regular. A sintaxe básica é grep [opções] padrão [arquivo...]. Quando você executa grep "confidencial" pacientes.txt, o comando lê o arquivo pacientes.txt e mostra na tela apenas as linhas que contêm a palavra "confidencial". Ele não modifica o arquivo, não apaga nada — apenas exibe o resultado.

Para remover as linhas que contêm um padrão, a ferramenta adequada é o grep com a opção -v (ou --invert-match), que seleciona as linhas que não correspondem ao padrão. O comando grep -v "confidencial" pacientes.txt exibe todas as linhas do arquivo que não contêm a palavra "confidencial". Se o objetivo é salvar o resultado em um novo arquivo (ou sobrescrever o original), usa-se o redirecionamento: grep -v "confidencial" pacientes.txt > pacientes_filtrado.txt. Para alterar o arquivo original, seria necessário redirecionar para um arquivo temporário e depois renomeá-lo, ou usar o sed (ex.: sed -i '/confidencial/d' pacientes.txt).

Outro erro grave na afirmação é a sintaxe grep "confidencial" | pacientes.txt. O pipe (|) conecta a saída de um comando à entrada de outro — por exemplo, grep "confidencial" pacientes.txt | wc -l conta quantas linhas contêm a palavra. Mas pacientes.txt não é um comando; é um arquivo. Escrever | pacientes.txt é um erro de sintaxe: o shell tentaria executar pacientes.txt como um comando, o que falharia. O arquivo deve ser passado como argumento ao grep, não como destino de um pipe.

A pegadinha da banca está em confundir o papel do grep: ele seleciona (mostra) linhas que casam com o padrão, mas não as remove. Para remover, é preciso inverter a lógica com -v. Além disso, a sintaxe com pipe está invertida — o arquivo não pode ser o destino de um pipe.

  1. 1grep "padrão" arquivomostra linhas que casam
  2. 2grep -v "padrão" arquivomostra linhas que NÃO casam
  3. 3> novo_arquivo.txtsalva o resultado
LEVEL · soulevel.com.br

Item — ❌ ERRADO

A afirmação diz que o psicólogo deve usar grep "confidencial" | pacientes.txt para remover as linhas. Isso está errado por dois motivos:

  1. O grep não remove linhas — ele apenas exibe as linhas que correspondem ao padrão. Para remover, seria necessário grep -v "confidencial" pacientes.txt (que mostra as linhas que não contêm a palavra) e, se quiser salvar o resultado, redirecionar para um arquivo.

  2. A sintaxe está invertida — o arquivo pacientes.txt deve ser passado como argumento ao grep (ex.: grep "confidencial" pacientes.txt), não como destino de um pipe. O pipe (|) conecta a saída de um comando à entrada de outro, mas pacientes.txt não é um comando.

Portanto, o comando apresentado não remove nada e ainda contém erro de sintaxe. A forma correta de remover as linhas que contêm "confidencial" seria, por exemplo: grep -v "confidencial" pacientes.txt > novo_arquivo.txt (para salvar em um novo arquivo) ou sed -i '/confidencial/d' pacientes.txt (para editar o arquivo original).

NÃO CAIA NESSA!

A banca explora a confusão entre filtrar e remover. O grep sem opções mostra as linhas que casam; para remover, é preciso inverter com -v. Além disso, o pipe (|) foi usado ao contrário: o arquivo deve ser argumento do grep, não destino do pipe. Guarde: grep -v = remove (mostra o que não casa); grep puro = seleciona (mostra o que casa).

Gabarito: ERRADO.

Link permanente: /questoes/qg347492