Как ввести символ табуляции в командной строке?
В интерактивном терминале bash как мне ввести символ табуляции? Например, если бы я хотел использовать sed для замены "_" на вкладки, я бы хотел использовать:
echo $string | sed 's/[_]/TAB/g'
Где TAB означает клавишу табуляции. Это работает в сценарии оболочки, а не в интерактивном режиме, где, когда я нажимаю клавишу табуляции, я не получаю никаких символов и слышен глухой звук. Я также пытался \t
но это только помещает т в строку, а не вкладки.
Обратите внимание, что это Mac OSX.
1 ответ
Предшествуйте этому с помощью Control + V, затем Tab, чтобы подавить обычное поведение расширения.
Поскольку этот вопрос помечен как "bash"... использование функции "цитирования ANSI-C" оболочки Bash, вероятно, предпочтительнее. Он расширяет escape-последовательности ANSI C-стиля, такие как \t
а также \n
и возвращает результат в виде строки в одинарных кавычках.
echo $string | sed $'s/_/\t/g'
Это не означает, что ваш терминал понимает привязку клавиш Control+V (буквально вставлять следующий символ) - некоторые могут этого не делать. Кроме того, поскольку все "невидимые" символы могут быть представлены буквально, ваше решение может быть скопировано без потери информации, и будет гораздо более очевидным / долговечным, если вы используете, включая это sed
вызов в сценарии, который другие люди могут в конечном итоге прочитать.
Также обратите внимание, что версия MacOS sed
это версия BSD. GNU sed
будет интерпретировать побег персонажа как \t
в шаблоне замены просто отлично, и вам даже не понадобится выше обходного пути.
Вы можете установить GNU sed с MacPorts, и он должен быть доступен как gsed
, но Homebrew может заменить вашу систему sed
в зависимости от того, как у вас есть $PATH
переменная аранжировка.