使用bash将特殊字符(√)转换为普通字符串

时间:2019-03-31 07:55:13

标签: bash hex

我想将以下十六进制字符串转换为普通字符串,并替换文件内容中的内联。十六进制字符用于复选框TRUE符号。

enter image description here

输入文件:

创建联系人列表     L0 |创建联系人列表| C432965(2466ms)

创建联系人     1)L0 |创建基本联系人| C679288

期望的文件:

创建联系人列表     已替换L0 |创建联系人列表| C432965(2466ms)

创建联系人     1)L0 |创建基本联系人| C679288

示例文件的十六进制转储:

def convert_int_to_fruit(int_value):
    try:
        my_fruit_from_int = Fruit(int_value)
        return my_fruit_from_int.name
    except:
        return None

尝试输入的代码:

我可以使用iconv和tr将该十六进制字符串转换为变量,但是如何重试此内容以替换整个文件呢?

root@server:/portal# hexdump -C /report.txt

00000000  0a 0a 20 20 43 72 65 61  74 65 20 43 6f 6e 74 61  |..  Create Conta|
00000010  63 74 20 4c 69 73 74 0a  20 20 20 20 e2 88 9a 20  |ct List.    ... |
00000020  4c 30 20 7c 20 43 72 65  61 74 65 20 63 6f 6e 74  |L0 | Create cont|
00000030  61 63 74 20 6c 69 73 74  20 7c 20 43 34 33 32 39  |act list | C4329|
00000040  36 35 20 28 32 34 36 36  6d 73 29 0a 0a 20 20 43  |65 (2466ms)..  C|
00000050  72 65 61 74 65 20 43 6f  6e 74 61 63 74 0a 20 20  |reate Contact.  |
00000060  20 20 31 29 20 4c 30 20  7c 20 43 72 65 61 74 65  |  1) L0 | Create|
00000070  20 62 61 73 69 63 20 63  6f 6e 74 61 63 74 20 7c  | basic contact ||
00000080  20 43 36 37 39 32 38 38  0a 0a                    | C679288..|
0000008a

是否有通过sed -i -e直接修改此类特殊字符的文件的解决方案?

1 个答案:

答案 0 :(得分:1)

e2 88 9a是十六进制转储的重要部分。

使用GNU sed:

sed -i 's/\xe2\x88\x9a/REPLACED/' /report.txt