File size: 687 Bytes
7db5ce2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/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