UNIX环境下替换文件十六进制值并正确写回的技术咨询
解决UNIX下UTF-8文件末尾十六进制字节替换问题
嘿,我来帮你搞定这个十六进制替换的事儿!你已经用xxd查看文件末尾了,接下来咱们一步步把末尾的25换成15,并且安全地写回文件:
第一步:先备份原文件(重要!)
操作前先备份,避免意外搞坏文件:
cp example_2018-02-02-14-51-47_US.txt example_2018-02-02-14-51-47_US_backup.txt
方法一:手动编辑十六进制文本(适合可视化确认)
- 把二进制文件转成可读的十六进制文本文件:
xxd example_2018-02-02-14-51-47_US.txt > temp.hex
- 用文本编辑器(比如
vim、nano)打开temp.hex,找到文件最后一行的十六进制部分末尾的25,把它改成15。注意:只修改十六进制区域的字符,别碰前面的偏移量和后面的ASCII注释部分!
- 把修改后的十六进制文本转回二进制文件:
xxd -r temp.hex modified_example.txt
- 验证结果:用
xxd查看修改后的文件末尾,确认替换成功:
xxd modified_example.txt | tail -1
方法二:用sed自动化替换(更高效)
如果不想手动编辑,可以直接用管道命令完成替换,一步到位:
xxd example_2018-02-02-14-51-47_US.txt | sed '$s/25$/15/' | xxd -r > modified_example.txt
xxd:把原文件转成十六进制文本输出sed '$s/25$/15/':定位到最后一行($),把行尾的25替换成15xxd -r:把修改后的十六进制文本转回二进制- 最后输出到
modified_example.txt
验证文件有效性
因为原文件是UTF-8编码,替换字节后记得确认文件编码是否正常:
file modified_example.txt
输出应该显示类似modified_example.txt: UTF-8 Unicode text,说明文件还是有效的UTF-8格式。
如果确认修改没问题,你可以把modified_example.txt替换原文件:
mv modified_example.txt example_2018-02-02-14-51-47_US.txt
内容的提问来源于stack exchange,提问作者Defcon
相关产品推荐
相关产品推荐

