我想将以下十六进制字符串转换为普通字符串并替换文件内容中的内联。 hex十六进制字符用于复选框TRUE符号。
创建联系人列表L0 |创建联系人列表| C432965(2466ms)
创建联系人1)L0 |创建基本联系人| C679288
创建联系人列表REPLACED L0 |创建联系人列表| C432965(2466ms)
创建联系人1)L0 |创建基本联系人| C679288
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
我可以用变量中的iconv和tr转换这个十六进制字符串但是如何实现相同的替换整个文件重试这样的内容?
echo "√" | iconv -f UTF-8 | tr '√' 'REPLACED' | ed -s /report.txt
sed -i 's/√/REPLACED/g' /report.txt
perl -pi -e 's/√/REPLACED/g' /report.txt
是否有任何解决方案通过sed -i -e直接修改文件以获取此类特殊字符?
e2 88 9a
是你的hexdump的重要组成部分。
使用GNU sed:
sed -i 's/\xe2\x88\x9a/REPLACED/' /report.txt