O grep está usando expressões regulares, conforme definido por POSIX . Por alguma razão, POSIX não definiu \t como guia.
Você tem várias alternativas:
-
diga ao grep para usar as expressões regulares conforme definido por perl (perl tem
\tcomo tab):grep -P "\t" foo.txta página man avisa que este é um recurso "experimental". pelo menos
\tparece funcionar bem. mas os recursos mais avançados de regex perl não podem. -
use o printf para imprimir um caractere de guia para você:
grep "$(printf '\t')" foo.txt -
use o caractere de tabulação literal:
grep "^V<tab>" foo.txtou seja: digite
grep ", pressionectrl+v, pressionetabe digite" foo.txt. Pressionarctrl+vno terminal faz com que a próxima tecla seja digitada na íntegra. isso significa que o terminal irá inserir um caractere de tabulação em vez de acionar alguma função vinculada à tecla tab. -
use o recurso ansi coting do bash:
grep $'\t' foo.txtisso não funciona em todos os shells.
-
use o awk:
awk '/\t/' -
use sed:
sed -n '/\t/p'
Veja o artigo da wikipedia sobre expressões regulares para uma visão geral das classes de caracteres definidas no POSIX e em outros sistemas.