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
\t
como tab):grep -P "\t" foo.txt
a página man avisa que este é um recurso "experimental". pelo menos
\t
parece 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.txt
ou seja: digite
grep "
, pressionectrl+v
, pressionetab
e digite" foo.txt
. Pressionarctrl+v
no 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.txt
isso 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.