与えられたinputfile
Cherries:20:100:300
Beans:12:400:500
Tomatoes:32:445:234
Potatoes:24:400:200
Kiwis:23:230:435
次のawkスクリプトがありますtestscript.script
。
BEGIN{ FS = ":"
print "------------------------"
}
if($3 + $4 > 500) {print $1, $2}
END{
print "------------------------"
}
このスクリプトを呼び出すときの出力awk -f testscript.script inputfile
は次のとおりです。
------------------------
Beans 12
Tomatoes 32
Potatoes 24
Kiwis 23
------------------------
このリストをアルファベット順(名前ベース)で並べ替え、変数に保存したいと思います。エンドブロックアークスクリプト。
つまり、コードは次のようになります。
BEGIN{ FS = ":"
print "------------------------"
}
*if($3 + $4 > 500) {print $1, $2 | "sort" = variable}
END{
print "------------------------"
print variable
}
このprint variable
コマンドは生成されます
------------
------------
Beans 12
Kiwis 23
Potatoes 24
Tomatoes 32
ソートされた項目のリストを変数にし、破線の後のENDブロックに印刷します。
これを行う最良の方法は何ですか?
ベストアンサー1
echo "---------------";awk -F: '$3+$4>500{print $1,$2}' inputfile |sort && echo "---------------"
awkを使う
awk -F: '$3+$4>500{Arr[$1]=$2}END{n=asorti(Arr,SArr);for(i=1;i<=n;i++){print SArr[i],Arr[SArr[i]]}}' inputfile