Como posso verificar uma string variável (modificável) no Unix?

Como posso verificar uma string variável (modificável) no Unix?

Estou usando Unix em um Bash Shell e desejo verificar se ele tem o seguinte formato:

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

Portanto, as seguintes strings seriam todas válidas:

  • 141.325.562
  • 65
  • 659.948.8465.9853.2659.156.884.351.0.451.01.10

Meu Unix é bastante básico, então toda ajuda seria apreciada.

Responder1

Para corresponder ao conteúdo de uma variável shell bashem zshou ksh93:

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

POSIXamente:

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

Bournely:

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

Para corresponder nas linhas de entrada:

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

Usamos +(ou o equivalente BRE \{1,\}) para corresponder1ou mais dígitos. *combinaria0ou mais.

Responder2

O regex que você deseja é provavelmente este:

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

Além disso, você pode verificar regex dinamicamente com esta ferramenta:https://regex101.com/

informação relacionada