replacesed中的控制字符

我需要在linux的文本文件中replace所有出现的控制字符CTRL + A(SOH / ascii 1),这怎么能在SED中实现呢?

Solutions Collecting From Web of "replacesed中的控制字符"

尝试:

sed 's/^A/foo/g' file 

使用Ctrl + V + A在上述命令中创建^A序列。

通过“替换”,我假设你想改变文件“in-place”。

使用GNU sed:

 # Create a file with a single control character (SOH) echo -e "\x01" > file # Change SOH control characters to the literal string "SOH" sed -i 's/\x01/SOH/g' file # Check result cat file 

给…

 SOH 

-i选项在OS X sed上不起作用,因此您需要通过将sed管道连接到临时文件来解决此问题。

这可以通过与-v (相当于--show-nonprinting选项,并将此管道到sed )完成。

如果控制字符是标题开始(SOH)字符(CTRL + A / ASCII 1),并且我们想用标签替换它,我们将执行以下操作:

 cat -v file | sed 's/\^A/\t/g' > out 

cat -v会用^ A替换SOH字符,然后在sed进行匹配和替换。

你想用什么来代替它们? 如果替换为单个字符,则tr是比sed更好的选择。 用字母“a”代替:

 tr '\1' a < input-file > tmp && mv tmp input-file 

你可以使用tr命令

tr -s'\ 001''|' 新文件

tr -s“word or delimiter”要替换为“word or delimiter”newfile