sed "s/Ç//\x01 /g" filename
它取代它x01
而不是\x01
答案1
您使用的 sed 版本是什么?因为,这件事在我这边运行得很干净。
备择方案:
tr '\200' '\001' < yourfile
perl -pe 's/\200/\x01/g' yourfile
SOH=`echo x | tr x '\001'`; sed -e "s/\200/${SOH}/g" yourfile
答案2
您发布的内容存在语法错误:它是一条Ç
用空字符串替换的指令,并带有一些尾随垃圾。正则表达式和替换模式之间必须有一个斜杠。要替换Ç
为文字字符串\x01
,您需要sed "s/Ç/\\x01 /g" filename
.反斜杠需要加倍,因为它是替换文本中的特殊字符。该答案的其余部分是关于替换Ç
为十六进制代码为 的字符01
。
\x01
通过十六进制代码指定字符的语法是可移植 sed 语法的扩展。它可以在 GNU sed(Linux 下的实现)中运行,但不能在 AIX 上运行。
您可以按字面意思在脚本中插入该字符,但在许多编辑器中键入起来很困难。您可以使用printf
命令和八进制表示法以可移植的方式在脚本中生成字符。
`sed "s/Ç/$(printf '\001') /g" filename`