Как найти вхождение слова (ключа) из одного списка во втором?

Автор tamweb, 09-08-2022, 19:10:52

« назад - далее »

tamwebTopic starter

Как найти вхождение слова (ключа) из одного списка во втором. С выдачей кол-ва совпадений.
Онлайн сервисы не тянут. У меня сотни тысяч строк в столбце.
Возможно уже есть у кого готовый вариант как тут? planetaexcel.ru/techniques/7/19014/
  •  


Val_Ery

Готовый вариант - на bash'е

#!/bin/bash

# source.txt - здесь список, в котором будет подсчитываться число вхождений
# temp.txt - это временный файл, создаеся скриптом, чтобы не попортить источник
# sed - при его помощи я удаляю пробелы точки и запятые, в результате получаю столбик из слов
# keys.txt - это список ключевиков

sed -e 's/ /\n/g' -e 's/\.//g' -e 's/\,//g' source.txt  > temp && mv temp temp.txt

array=( $(cat keys.txt) )

# проходим по массиву, выводя все в результирующий текстовый файл res.txt
for i in ${array[@]}; do
  echo "$i: "
  grep -ic $i temp.txt
done > res.txt


Результат будет примерно таким:

lorem:
16
amet:
22
sit:
22


Как это может вам помочь?
Если у вас списки в эксель, можете сохранить их в формате csv (с разделителями). В качестве разделителя установите запятую. В скрипте замените source.txt  и keys.txt на названия ваших файлов. Строки, которые начинаются с # - это комментарии, их можно удалить

Далее.
Чтобы bash-скрипт выполнился в винде, самый доступный способ - установить git for windows. В нем имеется линуксовый терминал (вместе с наиболее часто используемыми "командами").
Создаете папку test, в нее сохраняете ваши списки, копируете приведенный скрипт и сохраняете тут же с именем count.sh, нажимаете правую кнопку мыша в любом пустом месте проводника, выбирает "открыть git bash здесь".

В открывшемся терминале вводите ./count.sh и нажимаете Энтер. В результате у вас появится текстовый файл res.txt с количеством вхождений ваших ключей в исходный список
  •  


Старый

Как быстро начинающий становится профессионалом, рекламирующим что-то... ©