使用 bash 正则表达式验证文件内容

使用 bash 正则表达式验证文件内容

如何验证以下文件内容?

这应该包括 bash 正则表达式或 awk/sed 的任何其他想法的单个整数/浮点数。

例子:

cat  /var/VERSION/Version_F35_project_usa
2.8

答案1

如果您想检查整个文件是否包含多个十进制数字,可选地后跟一个.或多个数字,然后是一个可选的换行符,您可以这样做:

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

答案2

使用grep,如果匹配则表示有效:

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

上述正则表达式可以在sedorawk或 任何命令中使用。

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

相关内容