Questão de Sistemas Operacionais — Geral — VUNESP 2023
- Código
- vu197403
- Banca
- VUNESP
- Órgão
- TRF 3
- Ano
- 2023
- Cargo
- TJ TRF3
- A1 2
- BAmanda Bruno
- C123 111
- DAmanda-123 Bruno-111
- EAmanda Bruno 123 111
GabaritoA — 1 2
Gabarito: letra A. O comando awk '{print NR}' dados.txt imprime o número do registro (linha) atual — a variável interna NR — para cada linha processada. Como o arquivo tem duas linhas, a saída é 1 2. A pegadinha está em confundir NR (número da linha) com $0 (linha inteira), $1 (primeiro campo) ou $2 (segundo campo).
O awk é um processador de texto que lê um arquivo linha por linha e executa um programa (entre chaves) para cada linha. Dentro desse programa, existem variáveis internas automáticas: NR guarda o número da linha atual (começando em 1), NF guarda o número de campos da linha, $0 representa a linha inteira, $1 o primeiro campo, $2 o segundo, e assim por diante. No comando do enunciado, o programa é {print NR} — ou seja, para cada linha, ele imprime apenas o valor de NR.
Vamos aplicar ao arquivo dados.txt:
Linha 1: Amanda 123 → NR = 1 → imprime 1
Linha 2: Bruno 111 → NR = 2 → imprime 2
Como o awk processa as linhas em sequência e o print adiciona uma quebra de linha após cada valor, a saída final é:
1
2Na tela, isso aparece como 1 2 (um em cada linha). A alternativa A é a única que corresponde exatamente a esse comportamento.
A confusão mais comum é achar que NR imprime o conteúdo da linha. Isso seria $0. Outra confusão é achar que imprime o primeiro ou o segundo campo — isso seria $1 ou $2. A banca explora exatamente essa troca: em vez de NR, o candidato pode ler mentalmente $1 (Amanda Bruno), $2 (123 111) ou $0 (Amanda 123 Bruno 111).
A banca troca a variável NR (número da linha) por $0 (linha inteira), $1 (primeiro campo) ou $2 (segundo campo). O candidato que decora a sintaxe do awk sem entender o significado de cada variável cai nas alternativas B, C ou E. A dica é: NR = Número do Registro; $0 = linha inteira; $1 = primeiro campo; $2 = segundo campo.
O comando awk '{print NR}' dados.txt imprime o número da linha atual para cada linha do arquivo. Como o arquivo tem duas linhas, a saída é 1 e 2, uma em cada linha. A alternativa A (1 2) é exatamente o que o comando retorna.
Amanda Bruno seria a saída se o comando fosse awk '{print $1}' dados.txt — ou seja, imprimir o primeiro campo de cada linha. A alternativa troca NR por $1. O NR não tem relação com o conteúdo dos campos; ele é apenas o contador de linhas.
123 111 seria a saída se o comando fosse awk '{print $2}' dados.txt — imprimir o segundo campo de cada linha. Novamente, a alternativa troca NR por $2. O NR não acessa o conteúdo da linha, apenas o número sequencial dela.
Amanda-123 Bruno-111 seria a saída se o comando fosse awk '{print $1 "-" $2}' dados.txt — imprimir o primeiro campo, um hífen e o segundo campo de cada linha. A alternativa inventa uma formatação que não existe no comando original, que imprime apenas NR.
Amanda Bruno 123 111 seria a saída se o comando fosse awk '{print $0}' dados.txt — imprimir a linha inteira de cada registro. A alternativa troca NR por $0. O $0 representa a linha completa, enquanto NR é apenas o número da linha.
Gabarito: letra A
Link permanente: /questoes/vu197403