사용자가 입력한 지정된 범위 내의 모든 행/레코드를 표시하는 awk 스크립트를 작성하는 방법은 무엇입니까?

사용자가 입력한 지정된 범위 내의 모든 행/레코드를 표시하는 awk 스크립트를 작성하는 방법은 무엇입니까?

이것이 다음과 같다고 가정하자data.lst

Anil Sharma, Vaishali Nagar, science, 45, 67
Manoj Gupta, Sri Nagar Road, commerce, 66, 89
Kamal Sharma, Shastri Nagar, commerce, 81, 32
Rama Sharma, Vaishali Nagar, commerce, 45, 91
Chirag Harwani, Vaishali Nagar, science, 34, 63

awk사용자가 입력한 지정된 범위 내의 모든 행/레코드를 표시하는 스크립트를 작성하고 싶습니다 .

이것이 내가 지금까지 쓴 내용이다.

desiredact.awk
BEGIN{
 printf "Enter the initial range: "
 getline n1 < "/dev/tty"
 printf "Enter the last range: "
 getline n2 < "/dev/tty"
 }

더 진행하는 방법은 무엇입니까? 예, 범위는 줄 번호입니다.

답변1

원하는 출력 범위의 시작과 끝을 제공하는 것이 더 쉬울 것입니다.도착하다 awk블록에서 구문 분석하는 대신 변수로 사용합니다 BEGIN.

$ awk -v rangestart=3 -v rangeend=5 'NR >= rangestart && NR <= rangeend { print }' inputfile
Kamal Sharma, Shastri Nagar, commerce, 81, 32
Rama Sharma, Vaishali Nagar, commerce, 45, 91
Chirag Harwani, Vaishali Nagar, science, 34, 63

관련 정보