我需要在Linux中的文本文件中替换控制字符ctrl a(soh/ascii 1)的所有出现,如何在sed中实现?
<</p>尝试:
sed 's/^A/foo/g' file
使用 ctrl v a 在上述命令中创建^A
序列。
by"替换",我假设您想更改文件'在场'。
使用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提供到临时文件来进行工作。
这可以通过cat
使用-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'|'newfile
tr -s" word或deLimiter"想要替换为" word或deLimiter" newfile