Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Вот тут
where { get("arr") int (0) > 5 }
не совсем понятно, что значит int (0) > 5. Нашел только
int(name: String)
int(idx: String)
а здесь, похоже, число. Кстати было бы совсем хорошо, если бы язык был описан (пусть только в рамках статьи) через формальную грамматику, с правилами вывода (тем более, что язык не очень сложный). Тогда бы и вопросов таких не возникало
get("arr")
get("arr").int(0) > 5
get("arr")int(0) > 0
Просто для сравнения можете привести код, эквивалентный примеру с jq?
cat file.ndjson | analyze 'where{text("assigned_displayname")=="Матвей"} select{int("id")+"\t" +text("title")+"\t"+text("description")}'
cat file.ndjson | analyze 'where{text("assigned_displayname")=="Матвей"} select{"${int("id")}\t${text("title")}\t${text("description")}"}'
analyze 'get("tickets") where {"assigned_displayname"=="Матвей"} select {"${"id"} ${"title"}\t${"description"}"}'
.map{get("tickets") to get("security_info")}
// сделали пару из билета и секьюрных данных
KotlinJsr223DefaultScriptEngineFactory
, чего нет с self-executable jar. Так что пока слишком сырая технология.$ echo '{:a 1 :b 2 :c 3}' | jet --query '(select-keys [:a :b])'
{:a 1, :b 2}
$ echo '{:a {:b 1}}' | jet --query '[:a :b]'
1
$ curl -s 'https://api.github.com/repos/stedolan/jq/commits?per_page=5' | \
jet --from json --keywordize --to edn --pretty --query '
(map
{:message [:commit :message]
:name [:commit :committer :name]
:parents [:parents (map :html_url)]})'
bug () {
local bug
bug=$(curl https://ubugtrack.com/api/$UBUGTRACK_API/project/3758/tickets/\?filter_status\=1 | jq '.tickets | map(select(.assigned_displayname=="Матвей"))' | jq '.[] | "\(.id) \(.title) \t \(.description)\n"' | sed -e 's/"\(.*\)"/\1/' -e 's/\\t/\t/' | fzf --delimiter='\t' --preview='echo -e {2}' --with-nth=1 | sed 's/^\([0-9]\+\).*/\1/')
if [ -n "$bug" ]
then
echo "You selected bug $bug"
fi
}
#Оригинал
jq '.tickets | map(select(.assigned_displayname=="Матвей"))' | jq '.[] | "\(.id) \(.title) \t \(.description)\n"'
#fx
fx 'this.tickets.filter(t => t.assigned_displayname == "Матвей").map(t => `${t.id} ${t.title} \t ${t.description}`)'
# для fx мне не потребовался дополнительный пайп, и до кучи я смог написать всю строчку без подглядывания в документацию
#jsqry
jsqry 'tickets [_.assigned_displayname == "Матвей"] {`${_.id} ${_.title} \t ${_.description}`}'
# тут пришлось чуть больше смотреть на примеры, но все же это самый краткий вариант
Поздравляю, вы изобрели AQL
А что, если просто использовать powershell?
PS C:\Projects\Temp> Get-Content 'test.ndjson' | ConvertFrom-Json | where {$_.size -eq '245'}
4880123 245 True
Современный JSON процессор