HappyGoLucky

Web系サーバーサイド寄りの自動化大好きエンジニアの徒然なるブログ

jqでURLエンコーディング

$ echo "a+b=b&c=hoge&d=hfua piyo" | jq -R '[split("&")[] | ([split("=")[] | @uri] | join("="))] | join("&")'
"a%2Bb=b&c=hoge&d=hfua%20piyo"

jq には @uri で URLエンコーディングする機能がある。 & で split して、= でさらに split して、片っ端から @url して、 = と & で join し直す、という仕組み。

もうちょっとシンプルに出来そう。