我有一个大文本文件,其中一些行以项目符号点(•)开头。我想删除它们。我试过了
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
答案 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