使用sed删除特殊字符并添加空格
我有一段文字要更改:使用sed删除特殊字符并添加空格,sed,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不是两个字符,实际上只是一个控制字符。因此,您应该编写类似于\
^@^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/uradom | perl-pe的//[^\x20-\x7f]//gi'
看起来^A
不是两个字符,实际上只是一个控制字符。因此,您应该编写类似于\x01
的内容
总之,有三个字符范围,\x00-\x1f
是控制字符,\x20-\x7f
是ascii,其他是。。。依赖于编码的东西
我对sed不太了解,但如果您只需要ascii,我会用perl实现这一点:
head/dev/uradom|perl-pe的//[^\x20-\x7f]//gi'
如果可以枚举允许的字符,那么可以执行以下操作
sed -e 's/[^a-zA-Z0-9]/ /g'
这将用空格替换字母数字字符集合以外的所有字符
如果您只想用空格替换所有“不可打印”字符,则可以使用字符类[1]替换
sed -e 's/[^[:print:]]/ /g'
但是,一些旧版本的sed可能不支持这种语法,但它在unix规范中是标准化的,因此您不应该因为使用它而感到内疚。[2]
[1]
[2] 如果可以枚举允许的字符,则可以执行以下操作
sed -e 's/[^a-zA-Z0-9]/ /g'
这将用空格替换字母数字字符集合以外的所有字符
如果您只想用空格替换所有“不可打印”字符,则可以使用字符类[1]替换
sed -e 's/[^[:print:]]/ /g'
但是,一些旧版本的sed可能不支持这种语法,但它在unix规范中是标准化的,因此您不应该因为使用它而感到内疚。[2]
[1]
[2] 如果仅替换^A和^A,则可以使用以下选项:
sed 's/[\x01\x0]/ /g' file
然后我在SO中找到了更多类似的答案,这些答案已经讨论过了
如果仅替换^A和^A,则可以使用以下选项:
sed 's/[\x01\x0]/ /g' file
然后我在SO中找到了更多类似的答案,这些答案已经讨论过了
哎呀。抱歉,试图修复我的vim/chrome集成时,我似乎打破了前导空格。修正了。抱歉,试图修复我的vim/chrome集成时,我似乎打破了前导空格。固定的。