Usando o getline com o NR no awk

1

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?

    
por arpit 28.01.2016 / 14:41

2 respostas

3

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 
    
por 28.01.2016 / 14:49
0

getline obtém a próxima linha de entrada. Da página man -

   getline var           Set var from next input record; set NR, FNR.
    
por 28.01.2016 / 15:04