如何验证以下文件内容?
这应该包括 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
上述正则表达式可以在sed
orawk
或 任何命令中使用。
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