2011-02-12 4 views
7

Solía ​​usar grep -P con éxito antes, hasta que obtuve una máquina donde grep no se compila con el soporte de expresiones regulares de Perl. Ahora estoy teniendo problemas para pestañas que emparejan: \t carácter,Buscar pestañas, sin -P, usando 'grep'

grep -G '\t' matches a literal 't' 
grep -E '\t' matches a literal 't' 

¿Cómo responden a las pestañas?

Respuesta

11

Tal vez puedas probar:

grep -G $'\t' 

Para obtener más información consulte bug #23535: Grep Doesn't Support \t as a tab character.

+0

de hecho, gracias por la sugerencia. Aunque no necesitaba la opción -G para resolver mi problema, solo la secuencia de escape (en mi caso, algo así funcionó: grep $ '\ t' $ patternPrefix $ '\ t'morePatternData searchFile). –

1

El Perl RegEx entender '[\ t]', por lo que se puede hacer así:

echo -e "\t : words" | grep -P '^[\t]' 

el básico de expresiones regulares y necesidad extendido de expresiones regulares para éstos un "blanco" (expresiones regulares para "Espacio "/ "Tab"):

echo -e "\t : words" | grep -G '^[[:blank:]]' 
echo -e "\t : words" | grep -E '^[[:blank:]]' 

tal vez usted puede usarlo de esta manera:

echo -e "\t : words" | grep -E '^[[:blank:]]{2,8}' 
echo -e "\t : words" | grep -G '^[[:blank:]]\{2,8\}' 
+0

'grep -P' es excelente (sintaxis de Perl, implementación rápida) pero desafortunadamente es opcional y algunas distribuciones aún no lo incluyen por defecto. –

Cuestiones relacionadas