Невозможно перевести определенные символы с помощью утилиты tr - PullRequest
1 голос
/ 02 августа 2011

Предположим, у меня есть файл с именем doc с содержанием:

{}
[]

Теперь я хочу перевести все '{' и '[' в '(' и '}'и ']' в ')'.Пока что я могу правильно перевести '{}' и '[', но не могу перевести ']', используя эту команду оболочки:

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

Вывод:

()
(]

Пока что он может переводить другой символ, кроме ']'.Знаете ли вы, почему?

Это упражнение-оболочка, в котором требуется перевести все '{}' и '[]' в файле .c в '()'.Я просто хочу просто это здесь.

Ответы [ 2 ]

3 голосов
/ 02 августа 2011

tr просто берет наборы символов и диапазоны - вам не нужно окружать их [], как диапазоны регулярных выражений Вы можете сделать все свои переводы одной командой:

echo 'hello [ world }' | tr '[]{}' '()()' 
1 голос
/ 02 августа 2011

Вот один пример, который отлично работает:

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

ВЫХОД: []

Вот еще один пример:

 echo '}' | tr \} \]

ВЫХОД:]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...