Как ввести символ табуляции в командной строке? - PullRequest
25 голосов
/ 18 июня 2011

В интерактивном терминале bash как мне ввести символ табуляции?Например, если бы я хотел использовать sed для замены "_" на вкладки, я бы хотел использовать:

echo $string | sed 's/[_]/TAB/g'

Где TAB означает клавишу табуляции.Это работает в сценарии оболочки, а не в интерактивном режиме, где, когда я нажимаю клавишу табуляции, я не получаю никаких символов и слышен глухой звук.Я также пробовал \t, но он помещает в строку только т, а не табуляцию.

Обратите внимание, что это Mac OSX.

Ответы [ 2 ]

47 голосов
/ 18 июня 2011

За ним следует Control + V , затем Tab для подавления обычного поведения расширения.

0 голосов
/ 03 мая 2019

Поскольку этот вопрос помечен как "bash" ... использование функции "цитирования ANSI-C" оболочки Bash, вероятно, предпочтительнее.Он расширяет escape-последовательности ANSI C-стиля, такие как \t и \n, и возвращает результат в виде строки в одинарных кавычках.

echo $string | sed $'s/_/\t/g'

Это не зависит от вашего терминала, понимающего элемент управления + V (буквально вставлять следующий символ) - привязка клавиш - некоторые не могут.Кроме того, поскольку все «невидимые» символы могут быть представлены буквально, ваше решение может быть скопировано без потери информации и будет гораздо более очевидным / долговечным, если вы используете включение этого вызова sed в сценарий, который другойлюди могут закончить чтение.

Также обратите внимание, что версия sed для macOS является BSD-версией.GNU sed будет прекрасно интерпретировать экранирование символов, например \t в шаблоне замены, и вам даже не потребуется обходной путь.

Вы можете установить GNU sed с MacPorts , ион должен быть доступен как gsed, но Homebrew может заменить sed вашей системы в зависимости от того, как устроена переменная $PATH.

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