Ben*_*ton 3 linux sed regular-expression
我有一个日志文件,其中包含一堆不可见的控制字符,例如十六进制 \u0003。
我想使用 SED 之类的东西替换它,但无法使正则表达式的第一部分匹配:
/s/^E/some_string
我通过按 CTRL-V CTRL-0 CTRL-3 创建特殊字符来创建 ^E,如从“man ascii”页面读取的那样:
003 3 03等
但是,没有任何内容与该控制字符匹配。
任何帮助表示赞赏!
您也可以使用该tr
命令。例如:
删除控制字符:
tr -d '\033' < file
Run Code Online (Sandbox Code Playgroud)
要将控制字符替换为另一个控制字符:
tr '\033' 'x' < file
Run Code Online (Sandbox Code Playgroud)
如果您不确定控制字符的值是什么,请执行八进制转储,它将打印出来:
$ cat file
hello
^[
world
$ od -b file
0000000 150 145 154 154 157 012 033 012 167 157 162 154 144 012
0000016
Run Code Online (Sandbox Code Playgroud)
所以控制字符的值为^[
。\033