不会删除或替换£(英镑)标志

时间:2013-08-06 10:19:54

标签: bash csv sed

我正在尝试使用sed删除文本文件(.csv)中的所有£符号,但它不起作用,我不知道为什么。有什么建议?基本上使用:

sed -i 's/£//g' file.csv

语言环境的输出:

LANG=en_GB.UTF-8
LANGUAGE=
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_NAME="en_GB.UTF-8"
LC_ADDRESS="en_GB.UTF-8"
LC_TELEPHONE="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=

更新

所以,我不知道为什么sed不起作用,但是     tr -d'\ 243'<输入文件 有用吗!感谢@devnull!

3 个答案:

答案 0 :(得分:2)

这可能适合你(GNU sed):

sed 's/o\302\o243//g' file

N.B。如果你有疑问sed如何看到一个特定的角色使用l命令,sed将显示它看到的角色(在这种情况下是八进制)。 e.g。

echo '£' | sed 'l'
\302\243$

八进制代码后面的美元表示字符串的结尾。

对于长字符串使用l0,这将阻止包装。

答案 1 :(得分:1)

使用十六进制代码的十六进制代码。

似乎不同平台中的不同版本, sed 的行为方式截然不同。我刚刚获得GNU版本并且工作正常。

在使用sed之前,应该阅读“When should I NOT use sed

部分

答案 2 :(得分:1)

你有没有尝试过:

sed "s/\xA3//" inputfile

或者,您可以使用tr

tr -d '\243' < inputfile