Как посчитать слова в первых 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
— то, которое вы получите для первых трех строк данного текста, если разделите слова пробелами, тире и косыми чертами.
Приведенная выше команда разделит три первые строки на одно такое слово в каждой строке, заменив каждый пробел, тире и косую черту на новую строку (и удалив несколько последовательных новых строк с помощью параметра -s
with 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 строки