So nehmen Sie Eingaben aus einer Spalte, ändern sie in etwas anderes und zählen sie

So nehmen Sie Eingaben aus einer Spalte, ändern sie in etwas anderes und zählen sie

Aus dieser Dateihttps://1drv.ms/t/s!AjlMpzDMn2h7hWKyBGBxdhHXwjm8

Ich muss Spalte 3 nehmen, die aus den Zahlen 1-6 besteht, und diese Zahlen in Wörter wie 1-funkelnd, 2-fein ausgeben, ohne die Datei zu ändern.

Auch diese müssen gezählt werden, damit ich die Anzahl der jeweiligen Sorten mit den dazugehörigen Namen ausgeben kann.

Ich habe viele verschiedene awkCodes ausprobiert und konnte es nicht bekommen. Derzeit habe ich

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

das gibt mir überhaupt keine Ausgabe.

Antwort1

awkLösung:

Unter der Annahme der Beziehungskarte:

(Schaumwein = 1 fein = 2 gespritet = 3 süß = 4 weiß = 5 rot = 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, " ")- Teilen Sie die Zeichenfolge mit den entscheidenden Wörtern wordsdurch ein Trennzeichen " "(Leerzeichen) in ein Array auf, sodass das Array mit fortlaufenden Nummern indiziert wird, die Wörter als Werte haben (d. h. words[1]="sparkling" words[2]="fine" ...)

  • $3 in words{ c[$3]++ }- prüfen, ob der 3. Feldwert (mit einer Ziffer) innerhalb der Array- wordsIndizes vorkommt, und wenn ja, dann zählen Sie die Übereinstimmungen mitc[$3]++


Die Ausgabe:

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

verwandte Informationen