我正在学习bash,这是一个简短的脚本,可以将十分位数分配给文件$ 1的第二列。
复杂的位是在脚本中使用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}'
答案 0 :(得分:2)
您可以使用awk
从命令行设置-v
变量。
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
在其结果中放置的前导空格。