for (( int i="$4"; i<"$5"; i++ ))
do
awk "NR==i{print}" $1
done
我希望awk打印4美元到5美元之间的记录(这是一个范围,即4-9)
无法弄清楚为什么我会收到此错误?
Syntax error in expression ( error token is "i=2" )
答案 0 :(得分:2)
这不是C.您不需要声明计数器的类型。
答案 1 :(得分:1)
awk
对shell变量i
一无所知,首先,为什么不使用:
awk "(NR >= $4) && (NR <= $5) {print}" $1
shell本身应该扩展$
变量,因为它们在双引号内而不是单引号(当然这取决于shell,但涵盖了最流行的,主要是bash
)。 / p>
您可以在以下成绩单中看到这一点:
====
pax$ cat infile
..1
..2
..3
..4
..5
..6
..7
..8
..9
====
pax$ cat qq.sh
#!/usr/bin/bash
awk "(NR >= $4) && (NR <= $5) {print}" $1
====
pax$ ./qq.sh infile junk junk 2 5
..2
..3
..4
..5
====
pax$ _
答案 2 :(得分:0)
这里有正确的语法:
for (( i = $2 ; i <= $3; i++ ))
do
awk "NR==$i{print}" $1
done