Когда я ищу вкладки в файле с помощью (e)grep, я использую вкладку litteral (^v + <tab>). Я не могу использовать \t в качестве замены табуляции в регулярных выражениях. Например, с sed это выражение работает очень хорошо.
Итак, есть ли какая-либо возможность использовать не-литеральную замену для <tab> и каковы предпосылки для нерабочего / не интерпретируемого \t ?
grep использует регулярные выражения, определенные POSIX. По каким-либо причинам POSIX не определил \t как вкладка.
У вас есть несколько альтернатив:
скажите grep использовать регулярные выражения, определенные perl (perl имеет \t как вкладка):
grep -P "\t" foo.txt
справочная страница предупреждает, что это "экспериментальная" функция. по крайней мере \t кажется, все работает нормально. но более продвинутые функции регулярных выражений perl могут этого не делать.
используйте printf для печати символа табуляции для вас:
grep "$(printf '\t')" foo.txt
используйте буквальный символ табуляции:
grep "^V<tab>" foo.txt
то есть: введите grep ", затем нажмите ctrl+v, затем нажмите tab, затем введите " foo.txt. нажатие ctrl+v в терминале приводит к тому, что следующий ключ будет записан дословно. это означает, что терминал вставит символ табуляции вместо запуска какой-либо функции, привязанной к клавише табуляции.