[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 は置換されずに残ります。