bash - 替换除字母以外的所有内容

标签 bash shell unix sed tr

我正在尝试编写一个单行 bash 命令,它将把每个非字母替换为换行符。 (我使用的是 bash)

现在,我有这个:tr ^[a-zA-Z]g '\n'

我也尝试过 tr [^a-zA-Z]g '\n' 两者都不起作用。

我认为 ^ 字符将使正则表达式匹配除 a-z 和 A-Z 之外的所有字符,从而将所有其他字符转换为换行符,但它仍然只是将 a-z 和 A-Z 转换为换行符,并保留其他字符。

如何确保我使用 ^ 来反转正则表达式,而不是将其锚定到行的开头?

有人知道正确的语法吗?或者我应该尝试使用不同的命令?谢谢。

最佳答案

tr 不支持正则表达式。

您可以使用:

tr -c 'a-zA-Z' '\n'

关于bash - 替换除字母以外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43148868/

相关文章:

Bash 脚本创建了一个不应该的文件

linux - 在 linux 中重命名文件时包含文件夹名称

Linux 将一个 "//"字符串替换为 "/"

linux - 如何使用 set 更改 shell 变量?

linux - 如何在shell的递归目录中列出特定类型的文件?

unix:如何连接在grep中匹配的文件

bash - ps辅助: shows the same script multiple times

bash - 如何在 bash 脚本中处理文件名中的空格?

unix - 使用 tar 时排除目录

perl 运行两个系统命令错误