2

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値をawkbash で宣言することでから に渡し、awkスクリプトの先頭で-v.

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

同じことを行う方法はありますが、 awk から bash まで保持できるのでminmax

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 に答える