我正在尝试使用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!
答案 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