Bash:如何使用sed删除除字母和数字之外的所有字符?

时间:2015-02-19 21:43:49

标签: regex bash shell sed grep

首先,我还在学习正则表达式,我已经用Google搜索了这个,但仍然无效。

如何使用sed删除变量中除字母和数字之外的所有字符?例如,我有这个文本文件:

MytextOnly !@#!text@@32423#@$text#%$#text%#t23432ext$32342%^-_+-=-_++_;:"'][}}{|\/

如何只显示字母和数字?

2 个答案:

答案 0 :(得分:2)

您可以使用:

sed 's/[^[:alnum:]]\+//g' file
MytextOnlytext32423texttextt23432ext32342

[^[:alnum:]]属性将找到所有非字母数字字符。


编辑:根据以下评论:

sed 's~[^[:alnum:]/]\+~~g' file
MytextOnlytext32423texttextt23432ext32342/

答案 1 :(得分:2)

使用grep

grep -o '[[:alnum:]]' file

同意,没有完美的输出,但一切都在那里

使用tr

$ tr -d -c '[:alnum:]' < file
MytextOnlytext32423texttextt23432ext32342

如果你还想继续使用斜杠:

$ tr -d -c '[:alnum:]/' < file
MytextOnlytext32423texttextt23432ext32342/

对于python解决方案,请参阅https://stackoverflow.com/a/5843560/297323