¿Cómo puedo verificar una cadena variable (modificable) en Unix?

¿Cómo puedo verificar una cadena variable (modificable) en Unix?

Estoy usando Unix en Bash Shell y deseo verificar que tenga la siguiente forma:

[0-9*][,[0-9*]*]

Entonces, todas las siguientes cadenas serían válidas:

  • 141.325.562
  • sesenta y cinco
  • 659,948,8465,9853,2659,156,884,351,0,451,01,10

Mi Unix es bastante básico por lo que agradecería toda ayuda.

Respuesta1

Para hacer coincidir el contenido de una variable de shell en bash, zsho ksh93:

re='^[0-9]+(,[0-9]+)*$'
[[ $string =~ $re ]] && echo matches

POSIXly:

case $string in
  ("" | *[!,0-9]* | ,* | *, | *,,*) ;;
  (*) echo matches;;
esac

Bournelly:

expr " $string" : ' [0-9]\{1,\}\(,[0-9]\{1,\}\)*$' > /dev/null &&
  echo matches

Para hacer coincidir líneas de entrada:

grep -xE '[0-9]+(,[0-9]+)*'

Usamos +(o el equivalente BRE \{1,\}) para igualar1o más dígitos. *coincidiría0o más.

Respuesta2

La expresión regular que deseas es probablemente esta:

[0-9]*[,[0-9]+]*

Además, puedes comprobar las expresiones regulares sobre la marcha con esta herramienta:https://regex101.com/

información relacionada