如何编写 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

相关内容