Ответ 1
Предпримите его с помощью Control + V, а затем Tab, чтобы подавить обычное поведение расширения.
В интерактивном терминале bash как мне ввести символ табуляции? Например, если бы я хотел использовать sed для замены "_" на вкладках, я бы хотел использовать:
echo $string | sed 's/[_]/TAB/g'
Где TAB означает ключ табуляции. Это работает в оболочке script не в интерактивном режиме, где, когда я нажимаю клавишу табуляции, я не получаю никакого символа и звучит шум звонка. Я также пробовал \t
, но он только помещает t в строку, а не вкладки.
Обратите внимание, что это mac osx.
Предпримите его с помощью Control + V, а затем Tab, чтобы подавить обычное поведение расширения.
Поскольку этот вопрос помечен как "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
.