getline
lê na linha seguinte . Você não precisa usá-lo. A linha atual já está em $0
:
awk '{print NR, $0}' name_list.txt
Eu tenho um script bash que chama um script awk para imprimir cada linha do arquivo name_list.txt
#!/bin/bash
awk -f parse_list.awk name_list.txt
No script awk, estou usando o getline com o NR para imprimir cada registro conforme abaixo:
#!/usr/bin/awk
BEGIN {
line = ""
}
NR != 0 {
print NR
getline line
print line
}
Suponha que name_list.txt seja conforme mostrado abaixo:
aaaaaaaaaaa
bbbbbbbbbb
cccccccccc
ddddddddddd
eeeeeeeee
ffffffffff
gggggggg
Quando executo este script, esperava que o conteúdo de name_list.txt junto com o número da linha fosse impresso no console, mas quando eu o executo, getline e / ou print pula uma linha, então a saída é sempre.
1
bbbbbbbbbb
3
ddddddddddd
5
ffffffffff
7
ffffffffff
Alguém pode me dizer se estou usando NR e getline corretamente? Eu preciso do shell script e awk script, não quero combiná-los. Alguém pode ajudar por favor?
getline obtém a próxima linha de entrada. Da página man -
getline var Set var from next input record; set NR, FNR.