Ren*_*aud 2 variables bash 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
Run Code Online (Sandbox Code Playgroud)
我的awk命令:
awk 'NR==1{max=$3; min=$3}{if ($3>max) max=$3; if ($3<min) min=$3;} END {print max,min}' List.txt
Run Code Online (Sandbox Code Playgroud)
输出:
60和35.
我知道这是可以从一个值传递bash给awk通过右键在我的开始在bash声明,并再次awk用脚本-v.
Variable1=string;
awk -v Variable1=$Variable '{}'
Run Code Online (Sandbox Code Playgroud)
有没有办法做同样的事情,但从awk到bash所以我可以保持min和max?
你可以做:
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)
Run Code Online (Sandbox Code Playgroud)
然后:
echo $max
echo $min
Run Code Online (Sandbox Code Playgroud)
要么:
arr=( $(awk 'NR==1{max=$3; min=$3}{if ($3>max) max=$3; if ($3<min) min=$3;} END {print max,min}' List.txt) )
Run Code Online (Sandbox Code Playgroud)
然后:
echo ${arr[0]} # max
echo ${arr[1]} # min
Run Code Online (Sandbox Code Playgroud)
要么:
set -- $(awk 'NR==1{max=$3; min=$3}{if ($3>max) max=$3; if ($3<min) min=$3;} END {print max,min}' List.txt)
Run Code Online (Sandbox Code Playgroud)
然后:
max=$1
min=$2
Run Code Online (Sandbox Code Playgroud)