【发布时间】:2019-10-27 22:06:20
【问题描述】:
我的文件包含该字符串
abc = <0x12345678>;
abc = <0x01234 0x56789>;
abc = <0x123 0x456 0x789>;
abc = <0x0 0x01234 0x0 0x56789>;
abc = <0x012 0x345>, <0x678 0x901>;
def = <0x12345 0x67890>;
我需要将其转换为文件包含
abc = <0 0x12345678>;
abc = <0 0x01234 0 0x56789>;
abc = <0x123 0x456 0x789>;
abc = <0x0 0x01234 0x0 0x56789>;
abc = <0 0x012 0 0x345>, <0 0x678 0 0x901>;
def = <0x12345 0x67890>;
所以如果字符串以 'abc = ' 开头,我需要在十六进制数字之前添加零,在两个三角括号之间不超过 2 个十六进制数字并且没有 0x0 在该 HEX 数字之间。如何使用 sed、awk 或其他 bash 工具来做到这一点?
【问题讨论】:
-
文件是否可以包含
abc = <0x012 0x345>, <0x678 0x901 0x010>;这样的行? (具有不同十六进制数的组) -
只有相同数量的十六进制数的组
-
条件 HEX 数字之间没有 0x0 已经被前面的规则 覆盖 不超过 2 一对三角括号之间的十六进制数
-
@CasimiretHippolyte:前导空格are intended。
-
行
abc = <0x0 0x1234>可能吗?