Schreiben Sie einen Unix-Befehl, um die Gesamtzahl der Wörter in den ersten n Zeilen einer Datei zu zählen?

Schreiben Sie einen Unix-Befehl, um die Gesamtzahl der Wörter in den ersten n Zeilen einer Datei zu zählen?

3Wie kann ich die Wörter in den ersten Zeilen zählen ?

Eingang:

There are many systems which are Unix-like in their architecture. 
Not able among these are the GNU/Linux distributions. 
The distinctions between Unix and Unix-like systems.
For distinctions between SUS branded UNIX architectures and other similar architectures, see Unix-like.

Ausgabe:28

Antwort1

Verwenden eines Awk-Einzeilers:

awk ' { gsub("[-/]"," ") } NR<4 { w+=NF };END { print w }' <filename>

Antwort2

$ head -n 3 file | tr -s '/ -' '\n\n\n' | wc -l
      28

Die Anzahl 28scheint der Anzahl zu entsprechen, die Sie für die ersten drei Zeilen des gegebenen Textes erhalten würden, wenn Sie Wörter durch Leerzeichen, Bindestriche und Schrägstriche trennen.

Der obige Befehl teilt die ersten drei Zeilen in jeweils ein Wort pro Zeile auf, indem jedes Leerzeichen, jeder Bindestrich und jeder Schrägstrich durch einen Zeilenumbruch ersetzt wird (und mehrere aufeinanderfolgende Zeilenumbrüche mit der -sOption mit entfernt werden tr) und zählt dann die Anzahl der durch diese Aufteilung entstandenen Zeilen.

Wenn Sie das natürlichere verwenden head -n 3 file | wc -w, erhalten Sie 25Wörter. Dies liegt daran, dass nur durch Leerzeichen getrennte Wörter gezählt werden und sowohl als auch als einzelne Wörter wc -wbetrachtet werden .Unix-LikeGNU/Linux

Antwort3

Mit GNU grepoder kompatibel:

<myfile head -n 3 | grep -aEo '\w+' | wc -l

Wörterin diesem Fall handelt es sich um Folgen aus einem oder mehreren alphanumerischen Zeichen oder Unterstrichen.

Antwort4

head -n 4 myfile | wc -w

myfile ist die Eingabedatei, 4 sind die ersten 4 Zeilen

verwandte Informationen