grep está usando expressões regulares, conforme definido pelo POSIX . Por qualquer motivo, o POSIX não definiu \t
como tab.
Você tem várias alternativas:
diga ao grep para usar as expressões regulares conforme definido pelo perl (o perl tem \t
como tab):
grep -P "\t" foo.txt
a página de manual avisa que esse é um recurso "experimental". pelo menos \t
parece funcionar bem. mas recursos perl regex mais avançados podem não.
use printf para imprimir um caractere de tabulação para você:
grep "$(printf '\t')" foo.txt
use o caractere de tabulação literal:
grep "^V<tab>" foo.txt
ou seja: digite grep "
, pressione ctrl+v
, depois pressione tab
e digite " foo.txt
. pressionar ctrl+v
no terminal faz com que a próxima tecla seja tomada literalmente. isso significa que o terminal inserirá um caractere de tabulação em vez de acionar alguma função vinculada à tecla tab.
use o recurso de cotação ansi c do bash:
grep $'\t' foo.txt
isso não funciona em todas as conchas.
use awk:
awk '/\t/'
use sed:
sed -n '/\t/p'
Consulte o artigo da wikipedia sobre expressões regulares para obter uma visão geral das classes de caracteres definidas no POSIX e em outros sistemas.