我有一个文本块,我想改起来:使用SED去除特殊字符,并添加空格代替
^@^A^@jfits^@^A^@pin^@^A^@sadface^@^A^@secret^@^A^@test^@^A^@tools^@^A^@ttttfft^@^A^@tty^@^A^@vuln^@^A^@yes^@^
使用SED我想删除所有这些的^@^A^
(和变化字符)与几个空格。
我想:
cat -A file | sed 's/\^A\^\@/ /'
但是那显然是错误的,有人可以帮忙吗?
我有一个文本块,我想改起来:使用SED去除特殊字符,并添加空格代替
^@^A^@jfits^@^A^@pin^@^A^@sadface^@^A^@secret^@^A^@test^@^A^@tools^@^A^@ttttfft^@^A^@tty^@^A^@vuln^@^A^@yes^@^
使用SED我想删除所有这些的^@^A^
(和变化字符)与几个空格。
我想:
cat -A file | sed 's/\^A\^\@/ /'
但是那显然是错误的,有人可以帮忙吗?
看起来像^A
不是两个字符,但实际上只是一个控制字符。所以你应该写一些类似\x01
的东西。
无论如何,有三个字符范围,\x00-\x1f
是控制字符,\x20-\x7f
是ascii,而其他是......依赖于编码的东西。
我不知道的sed很好,但如果你想ASCII只,这是我怎么会在Perl已经做到了:
head /dev/urandom | perl -pe 's/[^\x20-\x7f]/ /gi'
,如果你能列举允许的字符,那么你可以做像
sed -e 's/[^a-zA-Z0-9]/ /g'
将在一组字母数字字符用空格代替一切不。
如果你只是想空格替换所有的“非打印字符,那么你可以使用一个字符类[1]
sed -e 's/[^[:print:]]/ /g'
一些老版本的sed可能不支持这种语法虽然,但它在unix规范中是标准化的,所以你不应该为使用它而感到内疚[2]。
[1] http://sed.sourceforge.net/sedfaq3.html
[2] http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap09.html#tag_09_03
在这里有146点,你现在应该如何使用代码标签... – Jotne
糟糕。对不起,试图修复我的vim/chrome集成我似乎已经打破了领先的空间。固定。 –
如果只更换^ A和^ @,您可以使用此:
sed 's/[\x01\x0]/ /g' file
然后,我于是找到更多类似的答案,这已经讨论过。
https://superuser.com/questions/75130/how-to-remove-this-symbol-with-vim
+1,为什么没有人投票,所以简单的解决方案。 – BMW