проверить содержимое файла с помощью регулярных выражений bash

просто используйте stat tool:

stat filename

с ним вы можете видеть все опции, так что с -f вы могли бы указать собственный формат:

man stat
3
14.08.2017, 18:39
2 ответа

Используйте grep, если совпадение означает, что оно действительно:

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

Приведенное выше регулярное выражение можно использовать в sedили awkили любой другой команде.

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

Здесь также проверяется, соответствует ли файл этому регулярному выражению или нет.

awk '/^[0-9]+(\.[0-9]+)?$/{print "matched";exit} {print "not-matched";exit}' file
5
27.01.2020, 21:09

Если вы хотите проверить, что файл в целом содержит ряд десятичных цифр, за которыми, возможно, следует .и другие цифры, а затем необязательный символ новой строки, вы можете сделать:

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
6
27.01.2020, 21:09

Теги

Похожие вопросы