我有几个较大的文件(400-800MiB),我需要将其中的十六进制值转换为其他值。 我可以在某些十六进制编辑器中执行此操作,但我想在 Bash 脚本中自动执行此操作。
我知道如何使用 xxd 检查给定值是否在文件中:
FILE='file.vpk'
SEARCH_STRING='MaxRagdollCount'
OLD_HEX_VALUE="$( echo -n "$SEARCH_STRING" | xxd -p )"
HEX_VALUE=($( xxd -p "$FILE" | grep -E -o "${OLD_HEX_VALUE}222022[0-9]{,2}22" ))
echo "$HEX_VALUE"
但我不知道如何编辑它。
我需要替换
的值MaxRagdollCount" "any_number"
(4d6178526167646f6c6c436f756e742220223222)
与
最大布娃娃计数”“9”
(4d6178526167646f6c6c436f756e742220223922)。
我问chatgpt:
In bash how do I replace the value of
4d6178526167646f6c6c436f756e742220223222
with
4d6178526167646f6c6c436f756e742220223922
建议正确使用 sed:(-i 就地编辑文件,最后的 /g 使其编辑所有出现的情况。)
sed -i 's/4d6178526167646f6c6c436f756e742220223222/4d6178526167646f6c6c436f756e742220223922/g' your_file.txt