从Bash中删除字符串中的所有特殊字符

Mar*_*nik 12 bash shell tr linux-mint

我有很多小写的文字,唯一的问题是,有很多特殊字符,我想用数字删除它.

下一个命令它不够强大:

tr -cd '[alpha]\n '
Run Code Online (Sandbox Code Playgroud)

如果是éćščž和其他一些人,则返回"?" 但我想删除所有这些.有更强的命令吗?

我使用linux mint 4.3.8(1)-release

Ini*_*ian 24

您可以使用tr以下字符串中仅打印可打印字符.只需在输入文件中使用以下命令即可.

tr -cd "[:print:]\n" < file1   
Run Code Online (Sandbox Code Playgroud)

该标志-d用于删除输入流中的参数中定义的字符集,并-c用于补充它们(反转提供的内容).因此,如果没有-c该命令,将从输入流中删除所有可打印字符,并使用它通过删除不可打印字符来补充它.我们还保留换行符\n以保留输入文件中的行结尾.删除它只会产生一个大的最终输出.

[:print:]仅仅是一个POSIX括号表达式是表达式的组合[:alnum:],[:punct:]和空间.的[:alnum:]是相同的[0-9A-Za-z],并[:punct:]包括字符! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~