[jq] gsub で文字列を一括置換する

作成日: 2026年10月24日

jq の gsub を使用すると、文字列の中で正規表現に一致する部分をすべて置換できます。

下記の例では、文字列に含まれる apple をすべて orange に置換しています。

printf '%s\n' '"apple pie, apple juice"' | jq 'gsub("apple"; "orange")'

実行結果は下記のとおりです。

"orange pie, orange juice"

gsub("apple"; "orange") の第1引数は置換対象を表す正規表現、第2引数は置換後の文字列です。引数はカンマではなくセミコロンで区切ります。

最初に一致した部分だけを置換したい場合は、sub を使用できます。

printf '%s\n' '"apple pie, apple juice"' | jq 'sub("apple"; "orange")'

実行結果は下記のとおりです。

"orange pie, apple juice"

この例では、2つ目の apple は置換されずに残ります。

参考

jq