【发布时间】:2021-09-06 08:39:39
【问题描述】:
我在执行搜索并替换为捕获组时遇到了一些问题。
我正在创建 3 个组并尝试替换第一个和第三个,同时保持第二个不变。实际结果是正确替换了第 1 组和第 2 组的输出,而第 3 组没有被替换。
这是我尝试过的:
perl -p -e 's|(\x80\xbb)(.{4,})(\x00\x00\x00)|\xc6\x83$2\x00\x00\x01|g' "$1" > "$1.tmp"
输入:\x80\xbb`\xef\x00\x00\x00
预期:\xc6\x83`\xef\x00\x00\x01
我不是最擅长正则表达式,所以请帮帮我。我也愿意接受涉及 sed 的答案。
真实内容:
\x81\x00\x00\x00\x80\xbb`\xef\x00\x00\x00u!L\x89<$H\x8d\x15\x91\xec\x12\x00L\x89\xefL\x89\xf6H\x8bM\xc8L\x8bE\xd0M\x89
xxd:
0x000073ff 80bb 60ef 0000 0075 214c 893c 2448 8d15 ..`....u!L.<$H..
0x0000740f 91ec 1200 4c89 ef4c 89f6 488b 4dc8 4c8b ....L..L..H.M.L.
0x0000741f 45d0 4d89 e1e8 5700 0000 c783 2c09 0000 E.M...W.....,...
0x0000742f 0000 0000 f20f 1005 652b 1200 0f29 8330 ........e+...).0
0x0000743f 0900 0048 b800 0000 0000 00f0 bf48 8983 ...H.........H..
编辑:我忘了说表示是十六进制的。
【问题讨论】:
-
好的第一个 Q,因为您有样本输入、预期输出、当前输出和......喘气,一些代码!。我已经删除了 bash 标签,因为它不相关。 (可能也不是他的外壳标签;-/!)。继续发帖,祝你好运。
-
不太好:显示的代码无法将给定的输入转换为所谓的实际输出。
-
你用什么来生成“真实内容”?