无法使用tr实用程序转换特定字符

时间:2011-08-02 05:18:25

标签: linux shell

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

{}
[]

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

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

输出结果为:

()
(]

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

这是一个shell练习,要求将.c文件中的所有“{}”和“[]”翻译成“()”。我只想在这里简单地说。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

这是一个很好的例子:

echo '{}' |tr '\{\}' '\[\]'
  

输出:[]

这是另一个例子:

 echo '}' | tr \} \]
  

输出:]