Напишите команду Unix для подсчета общего количества слов в первых n строках файла?

Напишите команду Unix для подсчета общего количества слов в первых n строках файла?

Как посчитать слова в первых 3строках?

вход:

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.

выход:28

решение1

Использование однострочника awk:

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

решение2

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

Похоже, что это количество 28— то, которое вы получите для первых трех строк данного текста, если разделите слова пробелами, тире и косыми чертами.

Приведенная выше команда разделит три первые строки на одно такое слово в каждой строке, заменив каждый пробел, тире и косую черту на новую строку (и удалив несколько последовательных новых строк с помощью параметра -swith tr), а затем подсчитает количество строк, полученных в результате этого разделения.

Если вы используете более естественный head -n 3 file | wc -w, вы получите 25слова. Это потому, что wc -wучитывает только слова, разделенные пробелами, и будет рассматривать Unix-Likeи GNU/Linuxкак одно слово.

решение3

С GNU grepили совместимым:

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

словав этом случае они представляют собой последовательности из одного или нескольких буквенно-цифровых символов или символов подчеркивания.

решение4

head -n 4 myfile | wc -w

myfile — входной файл, 4 — первые 4 строки

Связанный контент