jqコマンドでURIエンコーディング
以下のように@uri
フィルターを使用してURIエンコードができる。
$ echo -n '"テスト"' | jq '@uri'
"%E3%83%86%E3%82%B9%E3%83%88"
@uri
フィルターはURIエンコードを行う。
入力をRawモードで扱う
-R
オプションを指定すると、入力がJSON形式ではなくただの文字列(Rawモード)で扱える。
先述のコマンド例ではダブルクオートで囲って無理やりJSONとしているが、Rawモードを使用するとそのまま文字列を扱える。
$ echo -n 'テスト' | jq -R '@uri'
"%E3%83%86%E3%82%B9%E3%83%88"
"テスト"
のようにダブルクオートで囲まず、テスト
のようにそのまま入力できる。
出力をRawモードで扱う
-r
オプションを指定すると出力にダブルクオートがつかず、Rawモードで出力される。
$ echo -n '"テスト"' | jq -Rr '@uri'
%22%E3%83%86%E3%82%B9%E3%83%88%22
その他のフィルター
@htmlフィルター
@html
フィルターを使用すると、HTMLエンコードができる。
$ echo -n '<html>' | jq -Rr '@html'
<html>
@base64フィルター
@base64
フィルターを使用すると、Base64エンコードができる。
$ echo -n 'テスト' | jq -Rr '@base64'
44OG44K544OI
@base64dフィルター
@base64d
フィルターを使用すると、Base64デコードができる。
$ echo -n '44OG44K544OI' | jq -Rr '@base64d'
テスト
\第一線のプログラマーの行動原理を学べる!/