2013-09-27 19 views
1

我正在學習bash,這裏有一個簡短的腳本來爲文件$ 1的第二列分配十進制數。使用bash分配十進制

複雜的一點是在腳本中使用awk,當我運行腳本時導致ambiguous redirects

我現在已經在SAS中完成了這項工作,但是像兩行代碼完成這項工作的想法一樣。

如何在腳本中將總行數($ {N})傳遞給awk?謝謝。

N=$(wc -l < $1) 
    cat $1 | sort -t' ' -k2gr,2 | awk '{$3=int((((NR-1)*10.0)/"${N}")+1);print $0}' 

回答

2

可以設置使用-v從命令行awk變量。

N=$(wc -l < "$1" | tr -d ' ') 
sort -t' ' -k2gr,2 "$1" | awk -v n=$N '{$3=int((((NR-1)*10.0)/n)+1);print $0}' 

我加tr -d擺脫了領先的空間,wc -l放入其結果。