awk에서 getline과 NR 사용하기

awk에서 getline과 NR 사용하기

name_list.txt 파일의 각 줄을 인쇄하기 위해 awk 스크립트를 호출하는 bash 스크립트가 있습니다.

#!/bin/bash

awk -f parse_list.awk name_list.txt

awk 스크립트에서는 getline과 NR을 사용하여 다음과 같이 각 레코드를 인쇄합니다.

#!/usr/bin/awk

BEGIN {
  line = ""
}

NR != 0 {
  print NR
  getline line
  print line
}

name_list.txt가 다음과 같다고 가정합니다.

aaaaaaaaaaa   
bbbbbbbbbb  
cccccccccc 
ddddddddddd
eeeeeeeee
ffffffffff
gggggggg

이 스크립트를 실행하면 name_list.txt의 내용이 줄 번호와 함께 콘솔에 인쇄될 것으로 예상하지만, 실행하면 getline 및/또는 print가 한 줄을 건너뛰므로 출력은 항상 입니다.

1
bbbbbbbbbb  
3
ddddddddddd
5
ffffffffff
7
ffffffffff

내가 NR과 getline을 올바르게 사용하고 있는지 누구든지 말해 줄 수 있습니까? 쉘 스크립트와 awk 스크립트가 필요하지만 이들을 결합하고 싶지 않습니다. 누구든지 도와줄 수 있나요?

답변1

getline읽다다음철사. 당신은 그것을 사용할 필요가 없습니다. 현재 행은 이미 다음 위치에 있습니다 $0.

awk '{print NR, $0}' name_list.txt 

답변2

getline은 다음 입력 줄을 가져옵니다. 맨 페이지에서 -

   getline var           Set var from next input record; set NR, FNR.

관련 정보