Finden Sie die Anzahl der Teams aus einer Datei

532
Raghav

Ich habe vor kurzem mit dem Lernen von bash begonnen und muss die Anzahl der Teams aus einer Datei ermitteln. Die Datei kann von diesem Link heruntergeladen werden .

Unten ist ein Beispiel

Finden Sie die Anzahl der Teams aus einer Datei

Ich verstehe, dass ich cut und uniq verwenden muss, aber ich kann nicht herausfinden, wie. Jede Hilfe wird geschätzt.

-1
Bitte beachten Sie, dass https://superuser.com kein kostenloser Skript- / Code-Schreibservice ist. Wenn Sie uns sagen, was Sie bisher versucht haben (einschließlich der Skripts / des Codes, die Sie bereits verwenden) und wo Sie stecken bleiben, können wir versuchen, bei bestimmten Problemen zu helfen. Sie sollten auch lesen [Wie kann ich eine gute Frage stellen?] (Https://superuser.com/help/how-to-ask). DavidPostill vor 6 Jahren 1

2 Antworten auf die Frage

3
C0deDaedalus

Angenommen, diese teamsfileDatei enthält Daten, aus denen die Gesamtanzahl der Teams berechnet werden soll

1. mit cutunduniq

tail -n +2 teamsfile | cut -d "," -f2 | uniq | wc -l 
  • tail -n +2 teamsfile - druckt die Datei, druckt aber nicht die erste Zeile (was in Ihrem Fall eine Bezeichnung der Werte ist)

  • cut -d "," -f2 - schneidet das zweite durch Komma getrennte Feld (als Trennzeichen)

  • uniq - Zeigt nur eindeutige Werte an. (Kann auch verwenden sort -u)

  • wc -l - Anzahl der Zeilen in der Ausgabe drucken

Alternativ können Sie sedund verwenden awk. Sie sind sehr nützlich für solche Aufgaben.

2. Verwenden grep, um das Drucken der Zeile Ist zu vermeiden.

cat teamsfile | grep -v "Team" | cut -d "," -f2 | sort -u | wc -l 
  • grep -v - negiert die Suche nach dem String "Team"
Sie müssen nicht cat, dann grep - grep nimmt eine Datei als Eingabe Journeyman Geek vor 6 Jahren 0
@JourneymanGeek Bitte bearbeiten Sie die Antwort, da ich nicht weiß, wie sie direkt mit "grep" funktioniert. C0deDaedalus vor 6 Jahren 0
0
Vipul

Sie können einfach awk verwenden, um das gesamte Team zu drucken und die Zählung zu ermitteln.

grep -v "Team" teamsfile | awk -F',' '' | sort -u | wc -l 

Dieser eine Liner gibt Ihnen die Anzahl der Teams.

Erklärung ::

grep: wählt alle Zeilen aus, die das Schlüsselwort 'Team' enthalten.

awk: bricht die Zeilen auf der Basis eines "Kommas" und druckt die 2. Spalte davon, die die Teamnamen enthält.

sort -u: Es werden zunächst alle Teamnamen alphabetisch sortiert und dann nur eindeutige Datensätze gespeichert.

wc -l: Gibt die Anzahl der Zeilen an, in denen Daten vorhanden sind, in diesem Fall die Anzahl der eindeutigen Teamnamen.

Vielleicht wäre es schön, wenn Sie das durchgehen - für die Leute, die nicht verstehen, was sie tun. Außerdem brauchst du keine Katze und grep. Sein Katzenmissbrauch. Sie können grep -o teamsfile -v .... ich denke Journeyman Geek vor 6 Jahren 0
Vielen Dank @JourneymanGeek für das Geben von Tipps, damit ich anderen besser helfen kann. Vipul vor 6 Jahren 0