【发布时间】:2015-02-19 21:43:48
【问题描述】:
首先,我还在学习正则表达式,我在谷歌上搜索过,但还是不行。
如何删除带有sed 的变量中除字母和数字之外的所有字符?例如我有这个文本文件:
MytextOnly !@#!text@@32423#@$text#%$#text%#t23432ext$32342%^-_+-=-_++_;:"'][}}{|\/
如何只显示字母和数字?
【问题讨论】:
-
为什么指定答案必须“使用 sed”?为什么不寻求使用 bash 或 POSIX 标准化工具的答案,让人们为您提供最适合这项工作的工具?
-
因为我不知道,所以请记住我还在学习中
-
这就是我的观点——因为你还在学习,所以最好以足够笼统的方式提出问题,让他们对可能超出你最初期望的范围的答案敞开心扉。例如,如果你有
SomeShellVar='abc123def456',你可以echo "${SomeShellVar//[^[:alpha:]]/}"(或者LettersOnly=${SomeShellVar//[^[:alpha:]]/},如果你不想echo输出)来删除任何不是字母的东西,完全在bash内部。与[^[:alnum:]]相同,只留下字母和数字——在使用 shell 变量时比任何外部工具都要快。 -
...当然,这种方法专注于变量,而不是文件;对于处理文件,您现在的答案很好(尽管如果您想以适用于所有 POSIX 平台的方式就地进行文件编辑,
ex是另一个很好的了解工具)。 -
谢谢查尔斯,我会记住的