Free version of KDL (Knodl) shell allows to work with CSV and newline delimited files.
201
docker run --rm -ti -v "$(pwd)":/opt/data knodlang/kdlfree:kdl
We recommend to start like this because your data will be stored locally, so you can upgrade or delete the container. Your data will stay persistent in the directory, new container versions are to use them normally.
Your data in the current dir are mounted to /opt/data in container, the cli promt is positioned there automatically.
We have developed some bash scripts to work with kdl cli:
root@5602754e3a28:/opt/data# ls -1 /usr/local/bin/s*.sh
/usr/local/bin/s0_prepare_csv.sh
/usr/local/bin/s1_import.sh
/usr/local/bin/s2_dedup.sh
/usr/local/bin/s3_match.sh
/usr/local/bin/s9_export.sh
/usr/local/bin/sh_select_dict.sh
/usr/local/bin/sh_weight_cut.sh
PATH contains /usr/local/bin, so just start printing script name to enter a command.
s0_prepare_csv.sh asks for a file then processes it. It is to be CSV file with headers in the first line, UTF-8 encoding. The script tries to eliminate common CSV glitches to allow normal kdl work with this data.
IMPORTANT! kdl works with LINES format, the linebreak should only delimeter the records and not be used inside the data. LINES is not capable to process any string escaping.
You may use mlr --csv gsub -a '\n' ' ' "your_file_name" > "your_file_name.lines", it will replace linebreaks to three blanks.
s1_import.sh will import file into kdl storage, return the number of root element to be used for operations. For your convenience the script stores those numbers along with file names so you can select them easily.
s2_dedup.sh will deduplicate the selected data, ask for weight cut value and produce the result.
s3_match.sh will match the two data collections finding the best match of the second collection for each element of the first collection. Also will ask for weight cut value to produce well formatted result.
docker run --rm -ti -v "$(pwd)":/opt/data knodlang/kdlfree:kdl
Это рекомендуемая форма запуска, все данные будут сохранены в этой директории, сам контейнер можно обновлять, стирать и т.д.. Новые версии контейнера смогут использовать сохранённые в данной директории данные.
Ваши данные текущей директории становятся видны внутри контейнера в директории /opt/data, в которую промпт попадает сразу при входе.
Для удобства ознакомления и работы с kdl cli мы разработали скрипты на bash:
root@5602754e3a28:/opt/data# ls -1 /usr/local/bin/s*.sh
/usr/local/bin/s0_prepare_csv.sh
/usr/local/bin/s1_import.sh
/usr/local/bin/s2_dedup.sh
/usr/local/bin/s3_match.sh
/usr/local/bin/s9_export.sh
/usr/local/bin/sh_select_dict.sh
/usr/local/bin/sh_weight_cut.sh
PATH уже содержит /usr/local/bin, поэтому скрипты вызываются в cli, как команды.
s0_prepare_csv.sh просит указать файл для обработки, это должен быть CSV файл с заголовками в первой строке, кодировка UTF-8. Данный скрипт попробует устранить широко распространённые в CSV неточности, мешающие дальнейшей работе kdl.
ВАЖНО! kdl работает с форматом LINES, перенос строки должен быть только в качестве разграничителя записей, но не должен содержаться в полях, т.к. формат LINES не поддерживает работу с экранированием строк.
Можно воспользоваться командой mlr --csv gsub -a '\n' ' ' "имя файла" > "имя файла.lines", которая заменит переносы строк внутри полей CSV на три пробела.
s1_import.sh загрузит файл во внутреннее хранилище kdl, выдаст номер корневого элемента, который понадобится в дальнейшем. Для Вашего удобства скрипт автоматически запомнит импортируемые "справочники" и их номера, чтобы в дальнейшем обеспечить Вам удобную навигацию без необходимости записывать внутренние номера хранилища.
s2_dedup.sh произведёт дедупликацию выбранного "справочника", задаст наводящие вопросы, выдаст результат.
s3_match.sh для каждого элемента первого "словаря" найдёт наиболее подходящий элемент из второго "словаря". Затем также, как при дедупликации, сможете указать вес отсечки, чтобы удобнее получить финальный вид результата соответствия.
Content type
Image
Digest
sha256:d0d0d78ef…
Size
218.7 MB
Last updated
7 months ago
docker pull knodlang/kdlfree:kdl