linux - 无法使用 tr 实用程序翻译特定字符

标签 linux shell

假设我有一个名为 doc 的文件,其内容为:

{}
[]

现在我想将所有的 '{' 和 '[' 翻译成 '(' 和 '}' 以及 ']' 翻译成 ')'。到目前为止,我可以使用以下 shell 命令正确翻译“{}”和“[”,但无法翻译“]”:

cat doc | tr [\[] [\(] | tr [\{] [\(] | tr [\}] [\)] | tr [\]] [\)] | cat

输出是:

()
(]

到目前为止,它可以翻译除']'之外的其他字符。你知道为什么吗?

这是一个 shell 练习,要求将 .c 文件中的所有 '{}' 和 '[]' 转换为 '()'。在这里简单说一下。

最佳答案

tr 只接受字符集和范围——您不需要像正则表达式范围那样用 [] 将它们包围起来。您可以使用一个命令完成所有翻译:

echo 'hello [ world }' | tr '[]{}' '()()' 

关于linux - 无法使用 tr 实用程序翻译特定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6907579/

相关文章:

java - 在 Debian Linux 机器上用 Java 连接 MS Access

scripting - 用于调用另一个命令的 $@ 的 Powershell 类似物是什么?

c++ - Qt5 QProcess 处理带有 "special"字符的参数

linux - 使用 iptables 规则记录 https 上的所有流量

Linux 一个带管道操作的长shell命令

python - 上金所: How to see the output in real time

linux - Bash Shell 脚本 - 检查标志并获取其值

shell - 子 Shell 中变量中的引号

c - C 语言 shell 、输入和管道

linux - 当我通过 expect 使用 scp 命令时,星号无法识别