Bash: 如何用sed去除除字母和数字以外的所有字符?

Bash: How to use sed to remove all characters except letters and numbers?

首先,我还在学习正则表达式,我用谷歌搜索了这个但还是不行。

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

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

如何只显示字母和数字?

您可以使用:

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

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


编辑: 基于以下评论:

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

使用grep

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

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

使用tr

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

如果您还想保留正斜杠:

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

有关 python 的解决方案,请参阅