Как определить последнюю часть URL с JQ? - PullRequest
0 голосов
/ 01 июля 2019

Я должен различать следующие два пути.

короче: https://www.example.com/
дольше: https://www.example.com/foo/

В скрипте Bash при использовании встроенных литералов Bash, приведенных ниже, возвращается только более длинный.

$ url1=https://www.example.com/
$ url2=https://www.example.com/foo/

$ cut -d/ -f4 <<<${url1%/*}   # this returns nothing
>$

$ cut -d/ -f4 <<<${url2%/*}   # this returns last part of path
>$ foo

Таким образом, его можно определить более длинным в скрипте Bash,
но теперь я должен определить тот же фильтр для значения JSON, обрабатываемого в jq.

Если jq может написать так, как показано ниже, моя цель может быть достигнута ...

jq '. | select( .url | (cut -d/ -f4 <<< ${url2%/*})!=null) )'

Но не могу этого сделать. Как это сделать?

1 Ответ

1 голос
/ 01 июля 2019

jq имеет много функций обработки строк - это может быть хуже, чем проверка руководства jq . Для данной задачи, вероятно, было бы лучше использовать функцию регулярного выражения, но, поскольку вы упомянули cut -d/ -f4, было бы интересно отметить, что такой же эффект может быть достигнут с помощью:

split("/")[3]

Для последней нетривиальной части вы могли бы рассмотреть:

sub("/ *$";"") | split("/")[-1]
...