Запустите wc и отобразите только количество слов

Запустите wc и отобразите только количество слов

Я пытаюсь создать файл под названием ~/dictwords.txt, содержащий количество слов, найденных в файле /usr/share/dict/words.

Я уже создал файл, а затем удалил его, потому что сделал это неправильно. Я изначально использовал команду echo. Затем я попробовал эту команду и был так взволнован, потому что думал, что я был прав.

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

Это все равно неправильно, у меня должен быть только номер, без имени файла.

решение1

По умолчанию wcвыводить результат вместе с именами файлов. Если вам нужен только результат, вы должны сделать wcчтение ввода из stdin:

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

С вашим текущим решением вы можете использовать некоторые другие инструменты, чтобы получить только результат из wc, например cut, awk, grep...

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

Хотя это предполагает, что реализация wcне добавляет пробелы перед числом, что происходит не во всех wcреализациях.

решение2

Если вам понадобится использовать количество слов в скрипте, вы можете сохранить значение в переменной:

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

в противном случае вы можете сохранить его в файле:

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

решение3

Файл /usr/share/dict/wordsдолжен содержать одно слово на строку. Я представляю, что в некоторых системах он мог бы содержать один "словарный термин" на строку и что каждый из них может состоять из более чем одного слова, разделенного пробелом, но я сам никогда этого не видел.

Вы получаете количество строк с помощью одного из

  • wc -l </usr/share/dict/words(подсчитывает количество новых строк в файле)
  • sed -n '$=' /usr/share/dict/words(в последней строке вывести номер текущей строки)
  • awk 'END { print NR }' /usr/share/dict/words(в конце ввода вывести количество прочитанных записей (строк))
  • grep -c '[^[:space:]]' /usr/share/dict/words(подсчитайте количество строк, в которых есть хотя бы один символ, отличный от пробела)

Из них этот wc -lвариант наименее переносим, ​​поскольку он может выводить или не выводить дополнительные пробелы до и/или после фактического числа.

решение4

Вот решение с использованием cat, которое позволяет избежать печати имени файла после результата.

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

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