Дано:
Тысячи текстовых файлов в которых могут содержаться, помимо текста, куски yaml,json,toml документов, base64 и прочего
Наглядный пример:
$ cat 1.txt
some amazing text data
another cool text line
spec:
container:
name: abc
another cool text line with many words
yeah, 42 42 42
{
"foo": "bar",
"user": "alice"
}
oh wait, here is another cool text line
and here! another text line
и еще немного текста, а потом
0J/QvtCy0YHRgtGA0LXRh9Cw0LLRiNC40YHRjCDRgdC70YPRh9Cw0LnQvdC+INC90LAg0LLQtdGH0L3QvtC5INC00L7RgNC+0LPQtQrQkdC10Lcg0YHQu9C+0LIg0YEg0YLQvtCx0L7QuSDQvtGB0L7Qt9C90LDQu9C4Cg==
и еще текст
задача* со звездочкой: я ищу готовые решения которые помогли бы определить что в файле есть кроме текста, json, yaml, toml, base64, etc документы
$ cat 1.txt | magicfile
application/yaml
application/json
application/base64
задача** с двумя звездочками: «вычленить» эти документы из текстового файла, что-то в духе
$ cat 1.txt | magicextract
json: |
{
"foo": "bar",
"user": "alice"
}
yaml: |
spec:
container:
name: abc
base64: |
0J/QvtCy0YHRgtGA0LXRh9Cw0LLRiNC40YHRjCDRgdC70YPRh9Cw0LnQvdC+INC90LAg0LLQtdGH0L3QvtC5INC00L7RgNC+0LPQtQrQkdC10Lcg0YHQu9C+0LIg0YEg0YLQvtCx0L7QuSDQvtGB0L7Qt9C90LDQu9C4Cg==
я смотрю в сторону ast-grep и написания кастомных правил, либо запуск neovim, и через remote API подсовывать ему эти файлики и через LSP сервера попробовать вычленить куски документов.
В идеале нужно что-то в духе apache-tika, которому можно скармливать документ(1.txt,2.txt) и на выходе получать распарсенные куски json,yaml,etc документов
Всезнающий ЛОР в какую сторону копать? последним вариантом я рассматриваю написание очередной неинтересной программы которая бы их парсила, но я уверен что есть готовые решения