我试图使用 sed 命令删除版权字符。但它不起作用。以下是正在使用的命令。
sed 's/; © E/; (c)/g' input.txt > output.txt
但是当我使用vi
编辑器打开文件时,它显示\251
。
你能帮我一下吗?
答案1
感谢大家。
我得到了 perl 中的解决方案:
perl -lape 's/[^[:print:]]*//g'
答案2
您可以使用令人讨厌的技巧来使用十六进制代码来完成这项工作。例如,在默认的 UTF-8 ascii 中,您可以使用 which is 打印'
单\x27
引号的十六进制代码。
echo -e "\x27hello\x27"
'hello'
版权符号不是默认 ascii 表的一部分,而是属于扩展 ascii 代码。您还可以将扩展 ascii 打印为十六进制代码的组合
(根据建议http://www.fileformat.info/info/unicode/char/a9/index.htm)
echo -e '\xc2\xa9'
©
同样,您可以在 sed 中使用这些十六进制代码
a="hello ©"
sed 's/\xc2\xa9/??/' <<<"$a" ##replacing copyright symbol with two questionmarks
hello ??
如果代表版权符号的 \xc2\xa9 不起作用,您可以尝试 \xe2\x92\xb8,它是“带圆圈的拉丁文大写字母 C”。
也可以尝试\o251
(使用小写字母“o”,而不是零)。