Чтобы расширить ответ @ sikmir: в Bash, который является оболочкой по умолчанию в Mac OS X, все, что вам нужно сделать, это поместить символ $
перед строкой в кавычках, содержащей escape-последовательность, которую вы хотите получить интерпретированы. Bash автоматически переведет его для вас.
Например, я удалил все возвраты каретки MS-DOS из всех исходных файлов в lib/
и include/
, написав:
grep -lr $'\r' lib include | xargs sed -i -e $'s/\r//'
find . -name '*-e' -delete
BSD grep
сам по себе правильно интерпретировал бы '\r'
, но использование $'\r'
не повредит.
BSD sed
сам по себе неверно истолковал бы 's/\r//'
, но, используя $'s/\r//'
, я избежал этой ловушки.
Обратите внимание, что мы можем поставить $
перед всей строкой, и он позаботится обо всех escape-последовательностях во всей строке.
$ echo $'hello\b\\world'
hell\world