使用sed从文本文件中删除项目符号字符

时间:2018-01-05 15:24:56

标签: regex bash sed

我有一个大文本文件,其中一些行以项目符号点(•)开头。我想删除它们。我试过了

sed 's/\u2022//g' filename.txt

但这与子弹不匹配。我也尝试将子弹粘贴到我的sed命令中,但也没有成功。

E:

的输出
sed --version

sed (GNU sed) 4.2.2

E2:如果它有助于弄清楚如何捕捉子弹字符,它们最初是在Access中添加的。

<3> E3:正如评论中所暗示的那样,

echo -n '•' | hexdump -C

返回

00000000  95                                                |.|
00000001

3 个答案:

答案 0 :(得分:2)

这对我来说是一个有效的命令:

# Force paste the bullet into the command line
sed 's/^•//g' filename.txt

如果它不起作用,请尝试使用echo

进行转义
sed 's/^'"$(echo -ne '\u2022')"'//g' filename.txt

作为PesaThe suggests,您还可以使用printf进行转义:

sed 's/^'"$(printf '\u2022')"'//g' filename.txt

答案 1 :(得分:2)

我建议使用GNU sed:

sed 's/\xe2\x80\xa2//g' file

更新

sed 's/\x95//g' file

答案 2 :(得分:0)

看起来sed并不了解\u序列。 根据用户手册,它应该与POSIX.2 BRE兼容,我认为它应该有用,但它没有。

您可以尝试捕获十六进制序列(我使用hexdump -C)。

sed  's/^\xe2\x80\xa2//g' filename.txt

或者,您可以强制bash解析它。只需在字符串前添加$

sed $'s/\u2022//g' filename.txt