0
for var in 1 2 3 4 5 6 7 8 9 10
do
echo $var
export lower_bound=$((($var - 1) * 10))
echo $lower_bound
export upper_bound=$(($var * 10))
echo $upper_bound
awk '$2 >= $(($lower_bound)) && $2 < $(($upper_bound))' shubham_test.txt > file_$var.txt
#awk -v var1="$lower_bound" -v var2="$upper_bound" '{$2 >= $var1 && $2 < $var2}' shubham_test.txt > file_$var.txt
done
我想根據unix中的文本文件中字段的值拆分文件。當我將硬編碼的值傳遞給caompare時,awk可以工作,但如果我傳遞用於比較的變量(upper_bound和lower_bound),則awk無法正常工作。在awk命令中的參數
我看着它,甚至替換爲以下awk命令:
awk -v var1="$lower_bound" -v var2="$upper_bound" '{$2 >= $var1 && $2 < $var2}' shubham_test.txt > file_$var.txt
因此,它需要的參數。但是這也不起作用。誰能幫忙?
用awk,把'$'想象成一個*運算符*,它返回下一個表達式給出的字段的*值*。例如,表達式'(NF-1)'返回第二個最後一個字段的編號,'$(NF-1)'返回第二個最後一個字段的值。所以'var1'是你從shell變量$ upper_bound傳入的值(假設這個值是42)。然後'$ var1'是42號字段的值。 – 2015-02-09 14:43:43