首页 > 解决方案 > sed 用数字特殊字符替换字符串

问题描述

我想更换

4328"  +  base64_encode\("\x86\x01\x02\x03\x04\x05\x06\x07\x25\x07\x2E\x01\x02\x03\x04\xBB\x01\x62\x1A\x01\x01

4321\x38\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93

尝试了很多选项,我最后一次尝试的是

sed -i 's/4328["]  +  base64_encode[(]"\x86\x01\x02\x03\x04\x05\x06\x07\x25\x07\x2E\x01\x02\x03\x04\xBB\x01\x62\x1A\x01\x01/"4321\x38\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93"/g' *.utt

标签: bashsedgrep

解决方案


请您尝试以下,仅使用显示的样本进行测试。

sed -E 's/[0-9]+\".*\x[0-9]+/321\\x38\\x80\\x81\\x8\\x83\\x84\\x85\\x86\\x87\\x88\\x89\\x8A\\x8B\\x8C\\x8D\\x8E\\x8F\\x90\\x91\\x92\\x93/g'  Input_file

假设我们有以下 Input_file。

cat Input_file
singh is king bla bla 4328"  +  base64_encode\("\x86\x01\x02\x03\x04\x05\x06\x07\x25\x07\x2E\x01\x02\x03\x04\xBB\x01\x62\x1A\x01\x01

现在运行代码后,我们将得到以下输出。

sed -E 's/[0-9]+\".*\x[0-9]+/321\\x38\\x80\\x81\\x8\\x83\\x84\\x85\\x86\\x87\\x88\\x89\\x8A\\x8B\\x8C\\x8D\\x8E\\x8F\\x90\\x91\\x92\\x93/g'  Input_file
singh is king bla bla 321\x38\x80\x81\x8\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93

推荐阅读