使用bash分配十分位数

时间:2013-09-27 17:14:11

标签: bash

我正在学习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}'

1 个答案:

答案 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在其结果中放置的前导空格。