我需要在linux的文本文件中替换所有出现的控制字符CTRL + A(SOH / ascii 1),如何在SED中实现?
答案 0 :(得分:25)
尝试:
sed 's/^A/foo/g' file
使用 Ctrl + V + A 在上述命令中创建^A
序列。
答案 1 :(得分:19)
通过“替换”,我假设您想要“就地”更改文件。
使用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传输到临时文件来解决这个问题。
答案 2 :(得分:17)
这可以通过cat
使用-v
(等效--show-nonprinting
选项并将其汇总到sed
)来完成。
如果控制字符是标题开头(SOH)字符(CTRL + A / ASCII 1),并且我们想用标签替换它,我们将执行以下操作:
cat -v file | sed 's/\^A/\t/g' > out
cat -v
将用^ A替换SOH字符,然后在sed
中匹配并替换。
答案 3 :(得分:6)
你想用什么替换它们?如果替换是单个字符,则tr
是比sed
更好的选择。用字母'a'代替:
tr '\1' a < input-file > tmp && mv tmp input-file
答案 4 :(得分:0)
您可以使用tr命令
tr -s&#39; \ 001&#39; &#39; |&#39; newfile中
tr -s&#34; word或delimiter&#34;想要替换为&#34; word或delimiter&#34; newfile