假设我有一个名为 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/