2

awk我有一个值列表,我在其中使用inside of寻找最高和最低值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 中声明一个值来传递一个值,bash然后在我的脚本awk开头再次使用.awk-v

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

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

4

1 回答 1

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

或者:

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

或者:

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
于 2013-06-20T16:25:22.600 回答