Подтвердить что ты не робот

Как ввести вкладку char в командной строке?

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

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

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

Обратите внимание, что это mac osx.

4b9b3361

Ответ 1

Предпримите его с помощью Control + V, а затем Tab, чтобы подавить обычное поведение расширения.

Ответ 2

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

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

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

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