#!/bin/bash
awk -v"line=$1" '{
if(NR==line)
print
}' test.list
如果把上述代码存成a.sh,你输入a.sh 1就输出第一行,a.sh 2就是输出第二行,依次类推。希望对你有帮助。
请再补充问题,你的过滤条件是什么??
如果是 aaa 到 bbb 之间的所有行的话可以用 // , // 这种特殊的 Pattern组合
awk '/aaa/,/bbb/ print $0' test.list
如果test.list中 第一次出现aaa的是第N 行, 第一次出现bbb的是第M行, 那么上述脚本就会输出第N到第M行
判断NR啊。
awk '{if(NR==1) print $1|' test.list 结果:aaa
awk '{if(NR==2) print $1|' test.list 结果:bbb
你的写法是输出第一列,没问题,而你的需求是输出多列,但你的例子文件是多行一列,如上纠结,感觉问题没有描述或认识清楚,请补充......
awk '{print $(NR-1)}' test.list