Linux

使用 bash 正則表達式驗證文件內容

  • August 15, 2017

如何驗證以下文件內容?

這應該是通過 bash 正則表達式或任何其他帶有 awk/sed 的想法包含單個整數/浮點數。

例子:

cat  /var/VERSION/Version_F35_project_usa
2.8

使用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

如果要檢查整個文件是否包含許多十進制數字,可選地後跟一個.和更多數字,然後是可選的換行符,您可以這樣做:

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

引用自:https://unix.stackexchange.com/questions/386055