次のファイルがありますcalories
。
Apple pie s s n
Lemon pie s n n
Orange pie s s s
s(sugar)の最大発生回数を円グラフに印刷するawkスクリプトがあります。
#!/bin/awk -f
BEGIN{ sugar=0}
{
$1=""
count[++cnt] = gsub("s","")
$0 = ""
for(i=1; i<=cnt;i++){
$i=count[i]
if(count[i]>sugar)
sugar=count[i]
}
}
END{
print $1" "$2" has the largest amount of sugar with" sugar" sugars"
}
私が得た結果は次のとおりです。
2 1 has the largest amount of sugar with 3 sugars
希望の出力:
Orange pie has the largest amount of sugar with 3 sugars
awkスクリプトの実行に使用するコマンドは次のとおりです。
awk -f script.awk calories
ベストアンサー1
GNU awkを使用し、s
砂糖モードに設定されたフィールド区切り文字を使用します。
awk -F'\\<s\\>' '
sugar<NF{sugar=NF;pie=$1}
END{print pie "has the largest amount of sugar with " sugar-1 " sugar"}
' file
唯一のステートメントは、行内のsugar
数量の変数を設定し、円グラフの名前を設定することです。s
ファイルが解析されると、END
文が実行され、必要な文字列が印刷されます。