2011-04-18 48 views
0
for ((int i="$4"; i<"$5"; i++)) 
do 
    awk "NR==i{print}" $1 
done 

我想AWK打印出$ 4和5 $的記錄(itll是一個範圍,即4-9)語法錯誤(錯誤標記是 「I = 2」)

找不出爲什麼我得到這個錯誤?

Syntax error in expression (error token is "i=2") 

回答

1

awk不知道shell變量i什麼,一開始,爲什麼你剛纔不使用:

awk "(NR >= $4) && (NR <= $5) {print}" $1 

外殼本身應該擴大$變量,因爲他們是在雙引號內,而比單引號(當然這取決於外殼,但涵蓋了最受歡迎的引腳,主要爲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$ _ 
2

這不是C.你不需要聲明計數器的類型。

0

這裏正確的語法:

for (( i = $2 ; i <= $3; i++ )) 
do 
    awk "NR==$i{print}" $1 
done 

您可以在下面的成績單行動看到這

相關問題