valida o conteúdo do arquivo com expressões regulares bash

3

Como validar o seguinte conteúdo de arquivo?

Isso deve incluir um número inteiro / flutuante único por expressão regular bash ou qualquer outra idéia com awk / sed.

exemplo:

cat  /var/VERSION/Version_F35_project_usa
2.8
    
por jango 14.08.2017 / 17:08

2 respostas

5

Use grep , se combinado significa que é válido:

grep -P '^[0-9]+(\.[0-9]+)?$' infile.txt

A regex acima pode ser usada em sed ou awk ou qualquer comando.

sed -n -Ee '/^[0-9]+(\.[0-9]+)?$/p'
awk '/^[0-9]+(\.[0-9]+)?$/'

Aqui também está verificando se o arquivo corresponde a este regex ou não.

awk '/^[0-9]+(\.[0-9]+)?$/{print "matched";exit} {print "not-matched";exit}' file
    
por 14.08.2017 / 17:11
6

Se você quiser verificar se o arquivo como um todo contém um número de dígitos decimais, opcionalmente seguido por um . e mais dígitos e, em seguida, um caractere de nova linha opcional, você poderia fazer:

is_valid() {
   awk 'END{exit(!(NR == 1 && /^[0-9]+(\.[0-9]+)?$/))}' < "$1"
}

if is_valid /var/VERSION/Version_F35_project_usa; then
  echo the file has the right kind of content
else
  echo >&2 the file does not have the right kind of content
fi
    
por 14.08.2017 / 17:49