Я ищу команду для подсчета количества всех слов в файле. Например, если файл такой,
today is a
good day
тогда это должно напечатать 5
, так как там есть 5
слова.
text-processing
wc
Ричард
источник
источник
wc -w $FILE
?Ответы:
Команда
wc
ака. подсчет слов может сделать это:пример
источник
wc -w
не имеют того же определения, что и для GNUgrep -w
. Кwc
слову относится последовательность из одного или нескольких непробельных символов ([:space:]
класс символов в текущей локали). Например ,foo,bar
иfoo bar
(с неразрывным пробелом) каждое один слово.Я придумал это просто для числа:
Мне тоже нравится
wc -w < [file]
подходНаконец, для хранения только количества слов в переменной вы можете использовать следующее:
Это позволяет вам элегантно пропустить имя файла.
источник
wc -w < "$file"
просто номер.Лучшее решение - использовать Perl:
@Bernhard
Вы можете проверить исходный код
wc
команды из coreutils, который я тестирую на моей машине, с файломsubst.c
в исходном коде bash 4.2.И
Чем больше файл, тем эффективнее Perl по отношению к
wc
.источник
wc
занял ~ 14сек, в то время как Perl занял ~ 5сек!split
/\s+/
split(' ')
(split(" ", $_))
echo -e "unix\n linux" > testfile
wc
будет значительно быстрее, как и сPERLIO=:utf8
,perl
будет значительно медленнее.Давайте использовать AWK!
Здесь указана частота каждого слова, встречающегося в предоставленном файле. Я знаю, что это не то, что вы просили, но лучше! Если вы хотите увидеть вхождения вашего слова, вы можете просто сделать это:
Я даже добавил эту функцию в моей .dotfiles
Источник: AWK-опека Руби
источник
В
wc
программе подсчитывает «слова», но таковыми не являются, например , «слова» , что многие люди видят , когда они рассматривают файл.vi
Программа, например , использует другую меру «слова», ограничивающие их на основе их классов персонажей, аwc
просто подсчитывает вещи , разделенные пробелами . Эти две меры могут быть радикально разными. Рассмотрим этот пример:vi
видит три слова ( первое и второе, а также запятую, разделяющую их), аwc
видит одно (на этой строке нет пробелов). Есть много способов считать слова, некоторые из них менее полезны, чем другие.В то время как Perl будет лучше подходит для написания счетчик для слов ви-стиля, вот быстрый пример использования
sed
,tr
иwc
(умеренно портативный , используя буквенные символы возврата каретки^M
):Сравнение количества:
wc
дает 28.Для справки, POSIX vi говорит:
источник