#!/bin/bash DATA_JSON="./data.json" escape_sed() { # sedの置換で使う特殊文字(/ & \)をエスケープ echo "$1" | sed -e 's/[\/&\\]/\\&/g' } jq -r 'keys[]' "$DATA_JSON" | while read -r file; do if [ ! -f "$file" ]; then echo "ファイルが存在しません: $file" >&2 continue fi jq -r --arg file "$file" ' .[$file] | to_entries[] | "\(.key)\t\(.value[0])" ' "$DATA_JSON" | while IFS=$'\t' read -r orig replace; do orig_escaped=$(escape_sed "$orig") replace_escaped=$(escape_sed "$replace") # すべての一致を置換(-iはバックアップなし) sed -i "s/${orig_escaped}/${replace_escaped}/g" "$file" done done