【发布时间】:2011-07-31 11:11:38
【问题描述】:
UTF-8 文件 test.txt:
AAAAAAAAAAAAAA
十六进制是
41 41 41 41 41 41 41 41 41 41
sed s/A/B/g test.txt 有效
sed s/\x41/B/g test.txt 不起作用
有些字符是不可打印的,所以我必须使用它们的十六进制,A 只是一个例子。
【问题讨论】:
UTF-8 文件 test.txt:
AAAAAAAAAAAAAA
十六进制是
41 41 41 41 41 41 41 41 41 41
sed s/A/B/g test.txt 有效
sed s/\x41/B/g test.txt 不起作用
有些字符是不可打印的,所以我必须使用它们的十六进制,A 只是一个例子。
【问题讨论】:
shell 对其进行预处理,使用单引号。
sed 's/\x41/B/g' test.txt
echo -e \x41 # x41
echo -e '\x41' # A
【讨论】:
echo A | sed 's/\x41/B/g' => B. GNU sed 4.2.1 版
如果您只想替换单个字符,您应该可以使用带有八进制转义符的 tr,如下所示:
tr '\101' B
【讨论】: