Führen Sie wc aus und zeigen Sie nur die Wortanzahl an

Führen Sie wc aus und zeigen Sie nur die Wortanzahl an

Ich habe versucht, eine Datei mit dem Namen zu erstellen ~/dictwords.txt, die die Anzahl der in der Datei gefundenen Wörter enthält /usr/share/dict/words.

Ich habe die Datei bereits erstellt und dann entfernt, weil ich es falsch gemacht habe. Ursprünglich habe ich den Echo-Befehl verwendet. Dann habe ich diesen Befehl ausprobiert und war so aufgeregt, weil ich dachte, ich hätte recht.

wc -w /usr/share/dict/words > ~/dictwords.txt

Es ist immer noch falsch, ich sollte nur die Nummer ohne Dateinamen haben.

Antwort1

Standardmäßig wcwird das Ergebnis zusammen mit den Dateinamen gedruckt. Wenn Sie nur das Ergebnis möchten, müssen Sie wcdie Eingabe von stdin lesen:

</usr/share/dict/words wc -w > ~/dicwords.txt

Mit Ihrer aktuellen Lösung können Sie einige andere Tools verwenden, um nur das Ergebnis von zu erhalten , wcwie cut,, …awkgrep

wc -w /usr/share/dict/words | cut -d' ' -f1 > ~/dicwords.txt

Allerdings wird dabei davon ausgegangen, wcdass bei einer Implementierung vor der Zahl keine Leerzeichen eingefügt werden, was jedoch nicht bei allen wcImplementierungen der Fall ist.

Antwort2

Wenn Sie die Wortanzahl im Skript verwenden müssen, können Sie den Wert in einer Variablen speichern:

numWords=$(wc -w /usr/share/dict/words | tr -dc '0-9')

andernfalls können Sie es in der Datei speichern:

wc -w /usr/share/dict/words | tr -dc '0-9' > ~/dicwords.txt

Antwort3

Die Datei /usr/share/dict/wordssollte ein Wort pro Zeile enthalten. Auf manchen Systemen könnte sie möglicherweise einen „Wörterbuchbegriff“ pro Zeile enthalten und jeder dieser Begriffe könnte aus mehreren durch Leerzeichen getrennten Wörtern bestehen, aber das habe ich selbst noch nie gesehen.

Sie erhalten die Anzahl der Zeilen mit einer der

  • wc -l </usr/share/dict/words(zählt die Anzahl der Zeilenumbrüche in der Datei)
  • sed -n '$=' /usr/share/dict/words(in der letzten Zeile die aktuelle Zeilennummer ausgeben)
  • awk 'END { print NR }' /usr/share/dict/words(am Ende der Eingabe die Anzahl der gelesenen Datensätze (Zeilen) ausgeben)
  • grep -c '[^[:space:]]' /usr/share/dict/words(Zählen Sie die Anzahl der Zeilen, die mindestens ein Zeichen enthalten, das kein Leerzeichen ist)

Von diesen wc -list die Variante am wenigsten portierbar, da sie möglicherweise zusätzliche Leerzeichen vor und/oder nach der eigentlichen Zahl ausgibt oder nicht ausgibt.

Antwort4

Hier ist eine Lösung mit cat, die das Drucken des Dateinamens nach dem Ergebnis vermeidet.

cat /usr/share/dict/words | wc -w

verwandte Informationen