
Я пытаюсь создать файл под названием ~/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