我想使用gsar.exe
(命令行!)更改文件/行中带有十六进制值的某个单词,但如果该单词位于引号之间,则忽略它
原文:
9023 AAAA "this is a AAAA" "AAAA" "*:;AAAA'" Aaaa " Because AAAA" " aaaa " AaAa
gsar 完成后的文本:
9023 XXXX "this is a AAAA" "AAAA" "*:;AAAA'" XXXX " Because AAAA" " aaaa " XXXX
(其中 XXXX 代表十六进制值 a5)
请注意:
- 它应该不区分大小写
- 它应该忽略引号之间的所有内容
- 我想使用 gsar.exe,但 sed.exe (Windows) 或其他命令行工具也很好
- 开引号与闭引号相同 (0x22)
我已经为此工作了一整天,但我甚至还没有接近目标 :P
一个聪明人告诉我使用 REGEX,并使用 SKIP 和 FAIL 方法,这样 "[^"]+"(*SKIP)(*FAIL)|\w+ 就可以用来选择不在引号之间的文本。这在 Notepad++ GUI 中效果很好,但我无法将该正则表达式字符串与 Windows 的 gsar 结合使用。
我知道这可以完成,而且可能只需一行。这就是让它更加令人沮丧的原因。它不必是 gsar。Sed.exe 或其他命令行工具也很好!