El comando grep devuelve 0: coincide con todos los caracteres que no son dígitos globalmente

El comando grep devuelve 0: coincide con todos los caracteres que no son dígitos globalmente

Estoy buscando buscar en un archivo todas las cadenas que no contienen dígitos, se me ocurrió la siguiente expresión regular.

\D*/g

Que funciona como quiero en esta herramienta en línea:https://regex101.com/#pcre, pero cuando ejecuto el siguiente comando:

grep -c "\D*/g" nonDistortResults.txt 

Está regresando 0.

El archivo tiene el formato siguiente:

2573
kitchenDoor 2573
2573
2573
2573
2574
2574
2574
2574
kitchenDoor 2574
2574
2574
2575
2575
2575
2575
2575
kitchenDoor 2575
2576

Entonces, en el ejemplo anterior, esperaría que regresara 3.

Respuesta1

Debes adaptar tu patrón de la siguiente manera:

grep -c \D nonDistortResults.txt
  • No necesitamos el indicador 'codicioso' ya que grep ya funciona con líneas
  • Las comillas no son necesarias aquí.
  • La estrella puede ser cualquier número de resultados, incluido 0 (por lo que usarla devolverá verdadero para cada línea)

Si necesita volver a utilizar algunas expresiones regulares de Pearl (PCRE), puede echar un vistazo a la opción -P de grep, pero la página del manual dice:

-P, --perl-regexp
Interpreta PATTERN como una expresión regular de Perl (PCRE, ver más abajo). Esto es altamente experimental y grep -P puede advertir sobre características no implementadas.

información relacionada