将两个值从awk传递给bash

时间:2013-06-20 16:14:45

标签: bash variables awk

我有一个值列表,我在awk内使用bash寻找最高和最低值。我能够找到这些,但是我无法将值分配给某个变量,所以我可以稍后在bash中使用它们。

我的意见:

number  location  length  value

 1        2         40     0.96
---       5         45     0.97
 4        5         47     0.96
---       5         35     0.95
 2        5         60     0.95
---       3         55     0.96 

我的awk命令:

awk 'NR==1{max=$3; min=$3}{if ($3>max) max=$3; if ($3<min) min=$3;} END {print max,min}' List.txt

输出: 6035

我知道可以将bash中的值传递给awk,方法是将其声明为bash,然后再次发送到我的awk脚本开头-v

Variable1=string;
awk -v Variable1=$Variable '{}'

有没有办法做同样的事情,但是从awk到bash所以我可以保留minmax

1 个答案:

答案 0 :(得分:8)

你可以这样做:

read -r max min < <(awk 'NR==1{max=$3; min=$3}{if ($3>max) max=$3; if ($3<min) min=$3;} END {print max,min}' List.txt)

然后:

echo $max
echo $min

OR:

arr=( $(awk 'NR==1{max=$3; min=$3}{if ($3>max) max=$3; if ($3<min) min=$3;} END {print max,min}' List.txt) )

然后:

echo ${arr[0]} # max
echo ${arr[1]} # min

OR:

set -- $(awk 'NR==1{max=$3; min=$3}{if ($3>max) max=$3; if ($3<min) min=$3;} END {print max,min}' List.txt)

然后:

max=$1
min=$2