尝试从用户输入中对列进行排序

时间:2017-04-02 19:41:31

标签: bash unix scripting

所以我试图从一组文件中的特定列中找到min和max,然后将这些值放在两个文本文件中。我希望我的脚本排序的列是从用户输入的数字。这是我的代码,它大部分都有效,除了它给我每列的最小值和最大值。我该如何解决这个问题?

echo "Please enter a column you wish to change: "
read userinput
if [ ${userinput} -gt 10 ]; then
      echo "Error"
else
      sort -nk${userinput} Node{1..4}.txt | awk 'NR==1{print $userinput}' > result.txt
      sort -nk${userinput} Node{1..4}.txt | awk 'END{print $userinput}' > results.txt
fi

排序部分中的$ {userinput}应该是用户指定的列,例如,如果用户输入“10”,那么它将是sort -nk10。该脚本大部分都可以工作,除了它在检查我指定的所有四个文本文件时给出了所有列的最小值和最大值。如何修复它以便只给出用户指定的列的最小值和最大值?

1 个答案:

答案 0 :(得分:0)

您无法在awk中读取shell变量的值。使用-v选项设置awk变量。

userinput=4
# This will not work
awk 'BEGIN {print "UserInput=" $userinput}'
# This works
awk -v colnr=$userinput 'BEGIN {print "UserInput=" colnr }'

你可以像

一样使用它
echo "A B C D E F" | awk -v colnr=$userinput '{print "Col " colnr "=" $colnr }'
相关问题