У меня есть текстовый файл, содержащий твиты, и я должен подсчитать, сколько раз слово упоминается в твите. Например, файл содержит:
Apple iPhone X is going to worth a fortune
The iPhone X is Apple's latest flagship iPhone. How will it pit against it's competitors?
И скажем, я хочу посчитать, сколько раз слово iPhone упоминается в файле. Итак, вот что я попробовал.
cut -f 1 Tweet_Data | grep -i "iPhone" | wc -l
это конечно работает, но я запутался насчет команды 'wc' в unix. Какая разница, если я попробую что-то вроде:
cut -f 1 Tweet_Data | grep -c "iPhone"
где вместо этого используется -c? Оба из них дают разные результаты в большом файле, полном твитов, и я не понимаю, как это работает. Какой метод является правильным способом подсчета происшествия?
text-processing
grep
cut
Maxxx
источник
источник
cut -f1
резка на основе вкладок, что здесь мало что дает. Вы уверены, чтоwc -l
это действительно дает вам правильный счет? Здесь будет показано 2, но я считаю 3 экземпляра «айфона».Ответы:
Учитывая такое требование, я бы использовал GNU grep (для
-o
опции ), а затем пропустил его,wc
чтобы подсчитать общее количество вхождений:Обычные
grep -c
данные подсчитывают количество совпадающих строк , а не общее количество совпадающих слов . Использование этой-o
опции говорит grep выводить каждое совпадение на его линии, независимо от того, сколько раз совпадение находится в строке.wc -l
говоритwc
утилите посчитать количество строк. После того, как grep поместит каждое совпадение в свою собственную строку, это будет общее количество вхождений слова во входные данные.Если GNU grep недоступен (или не нужен), вы можете преобразовать ввод
tr
так, чтобы каждое слово находилось в отдельной строке, а затем используйтеgrep -c
для подсчета:источник
Самый простой метод,
для тебя это будет,
источник