在SED更换控制字符(Replacing Control Character in sed)

2019-06-18 18:20发布

我需要更换控制字符CTRL + A(SOH / ASCII 1)中出现的所有在Linux中的文本文件,这怎么能在SED能实现吗?

Answer 1:

尝试:

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

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



Answer 2:

通过“替换”,我假设你想改变“就地”的文件。

使用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将临时文件的工作,解决这一问题。



Answer 3:

这可以通过做cat-v (等效--show-nonprinting选项和管道进入这个sed )。

如果控制字符标题开始(SOH)字符(CTRL + A / ASCII 1),我们希望有一个标签来取代它,我们将做到以下几点:

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

cat -v将替换^ A,这将随后进行匹配并在更换SOH字符sed



Answer 4:

你要什么,以取代他们? 如果替换为单个字符, tr是一个更好的选择,而不是sed 。 要以字母“A”代替:

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


Answer 5:

您可以使用tr命令

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

TR -s“字或分隔符”想“字或分隔符”的newfile更换



文章来源: Replacing Control Character in sed