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" )发布于 2011-04-18 08:16:20
awk对外壳变量i一无所知,首先,您为什么不使用:
awk "(NR >= $4) && (NR <= $5) {print}" $1shell本身应该扩展$变量,因为它们在双引号内,而不是单引号内(当然,这依赖于shell,但涵盖了最流行的变量,主要是bash)。
你可以在下面的文字记录中看到这一点:
====
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$ _发布于 2011-04-18 08:14:47
这不是C,你不需要声明计数器的类型。
发布于 2011-04-18 08:24:28
下面是正确的语法:
for (( i = $2 ; i <= $3; i++ ))
do
awk "NR==$i{print}" $1
donehttps://stackoverflow.com/questions/5697348
复制相似问题