私のスクリプトは、価格(col $ 3) で食料品リスト(col $ 1)を出力します。そして、それらをカテゴリ($ 2列)で結合し、各カテゴリのコストを追加します。どうやってawkにループを書くのですか?
問題は私がforループを実行しているときに、常に元の食料品リスト出力の最初の行だけが混乱してしまうことです。 別のbegin endでそれらを分離しようとしましたが、動作しません。
ここに私の現在のコードは、サブカテゴリのループがコメントアウトされています。
#!/bin/awk
BEGIN { FS="\t+"; OFS=" "; printf("%-30s %s\n", "Item","Cost")
printf("%-30s %s\n", "====","====")}
{ printf("%-30s %s\n", $2, $3, 30) }
END {
}
#BEGIN {
#}
#NR==1{print;next}
#{a[$1]+=substr($3, 2)}
#END { for(i in a)printf("%-30s %s\n", i, a[i], 30)
#}
出力サンプル:
Item Cost
==== ======
Air freshener $10.60
Antiperspirant/Deodorant $03.80
Apples $10.80
Asparagus $01.05
Avocados $08.25
BBQ sauce $08.55
Baby food $08.60
Baby wash $05.40
Subtotal by Category
---------------------------
Alcohol $ 76.10
Baby/Pet $ 81.55
Baking $ 54.15
Bread $ 50.20
Canned goods $ 55.60
Chips/Crackers $ 53.65
Cleaner/Detergent $ 46.75
Condiments $ 92.40
Dairy $ 46.30
Produce $195.45
Soap/Sundry $113.65
Spices $ 89.40
===========================
Total $955.20
入力サンプル:一度にあなたがやりたいだろう
Cleaner/Detergent Air freshener $10.60
Soap/Sundry Antiperspirant/Deodorant $03.80
Produce Apples $10.80
Produce Asparagus $01.05
Produce Avocados $08.25
Condiments BBQ sauce $08.55
Baby/Pet Baby food $08.60
Baby/Pet Baby wash $05.40
Bread Bagels/Croissants $10.35
Baking Baking powder/Soda $07.85
Produce Bananas $02.90
Spices Basil $01.70
Soap/Sundry Bath soap/Hand soap $06.75
Cleaner/Detergent Bathroom cleaner $04.55
- それは何を理解するのは難しいです – RomanPerekhrest
@RomanPerekhrest私はいくつかのサンプルの入力と出力、感謝を追加しました。 – M2bandit
なぜ「バスルームクリーナー」、「ベーグル/クロワッサン」などが出力から逃したのですか? – RomanPerekhrest