
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 wc
wird das Ergebnis zusammen mit den Dateinamen gedruckt. Wenn Sie nur das Ergebnis möchten, müssen Sie wc
die 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 , wc
wie cut
,, …awk
grep
wc -w /usr/share/dict/words | cut -d' ' -f1 > ~/dicwords.txt
Allerdings wird dabei davon ausgegangen, wc
dass bei einer Implementierung vor der Zahl keine Leerzeichen eingefügt werden, was jedoch nicht bei allen wc
Implementierungen 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/words
sollte 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 -l
ist 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