Perl 初学者 : How can I find/replace ascii characters in a file?

标签 perl replace find ascii

我对 Perl 完全陌生,我认为这是解决我的简单任务的最佳语言。我需要将二进制文件转换为可读的文件,并且需要找到像 \x00\x39 这样的字符串并将其替换为 \x09 (tab) 或类似的东西。

我从 bash 开始,效果很好:

perl -pi -e 's/abc/123/g' test.txt

但是,当我开始输入 ascii 代码时,我迷路了:

perl -pi -e 's/0x49/*/g' test.txt
perl -pi -e 's/{char(49)}/*/g' test.txt

这个命令看起来像 perl 脚本中的一行?我有大约几百个这样的查找/替换操作和一个 500MB 的文本文件。有什么需要我知道的警告吗?

非常感谢您的帮助!

加里

最佳答案

使用 \x## 表示法:

perl -pi~ -e 's/\x00/*/g' test.txt

要将每个“特殊”字符替换为其括号中的代码,请使用 /e 选项:

perl -pi~ -e 's/([\x0-\x09\x11-\x1f])/"[" . ord($1) . "]"/eg' test.txt

关于Perl 初学者 : How can I find/replace ascii characters in a file?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18286743/

相关文章:

c - 在c中查找特定文件类型并保存

copy - 如何使用 cp 和/或 find 递归地将 src 中的所有 *.foo 文件复制到目标?

windows - 如何从 MinGW 安装管理器安装 perl 5.10?

java - 寻求有关项目的建议。解析逻辑表达式

regex - 如何在 Rust 中使用带反向引用的正则表达式进行正则表达式字符串替换?

c# - 想要用给定的十六进制代码值形成一个字符串

php - 除了带有远程链接的 anchor 之外,我如何去除标签?

c - 十六进制查找和替换

xml - 输入 XML 数据与输出 XML 格式不匹配

perl - 在 Bash 或 Perl 中重命名和移动文件