jqでURIエンコードする
ka2n
(Updated: )
ごく稀にbashなどのシェルや、CLIプログラムで使用するプログラムから日本語などをURIエンコードしたいことがあると思います。
そのためにrubyやnode.jsを動かすのも面倒だなぁ、と思っていたのですがjqでもできることがわかったのでメモしておきます。
やり方
$ echo "日本語" | jq -Rr @uri
%E6%97%A5%E6%9C%AC%E8%AA%9E
# echoには改行(\n)が含まれるがそれも含める場合
$ echo "日本語" | jq -sRr @uri
%E6%97%A5%E6%9C%AC%E8%AA%9E%0A
オプションの説明
-R, --raw-input
: JSONとしてパースせず、行ごとに文字列として処理を行う-r, --raw-output
: 文字列として出力を行う@uri
:percent-encoding
を行う- ほかにもこんなのがありました。(jq (1): Linux man pages – code.tools)
@html
: HTMLとしてエスケープする@base64
: Base64エンコードする@json
,@csv
,@tsv
: JSON,CSV,TSVとして出力
- ほかにもこんなのがありました。(jq (1): Linux man pages – code.tools)
ka2n
Webエンジニアです