列から入力を受け取り、他のものに変更して計算する方法

列から入力を受け取り、他のものに変更して計算する方法

このファイルからhttps://1drv.ms/t/s!AjlMpzDMn2h7hWKyBGBxdhHXwjm8

数字 1 から 6 で構成される 3 番目の列を取得し、ファイルを変更せずに、この数字を 1-sparkling、2-fine などの単語で出力する必要があります。

また、各タイプの数とその名前を出力できるように計算する必要があります。

さまざまな種類のawkコードを試しましたが、取得できませんでした。現在私

awk -F: '$3==1, ((counter++)) {print counter1}' wine.txt

これは私にまったく出力を与えません。

ベストアンサー1

awk解決策:

仮想関係図:

(スパークリング=1、プレミアム=2、強化=3、スイート=4、ホワイト=5、レッド=6)


awk -F':' 'BEGIN{ split("sparkling fine fortified sweet white red", words, " ") }
           $3 in words{ c[$3]++ }
           END{ for(i in words) print words[i]"="c[i] }' file
  • split("sparkling fine fortified sweet white red", words, " ")words- キーワードを含む文字列を区切り文字(スペース)で配列に分割し、その単語を値として連続した" "数字を使用して配列のインデックスを作成します(例words[1]="sparkling" words[2]="fine" ...:)。

  • $3 in words{ c[$3]++ }- 3番目のフィールド値(数値を含む)が配列wordsインデックスに表示されることを確認します。その場合は、次のように計算します。c[$3]++


出力:

sparkling=
fine=15
fortified=28
sweet=10
white=23
red=24

おすすめ記事