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.