我怎样才能看到有数字的字符串是否在数字范围内?
我试过了:
v1=110
v2=220
echo "app_name_117.sh" | grep -iEo "*.*.($v1|$v2).sh"
范围可以介于0到999之间。 到目前为止没有运气。
答案 0 :(得分:2)
最好使用awk
代替grep
来比较数值范围:
echo "app_name_117.sh" | awk -F '[._]+' '$(NF-1) >= 116 && $(NF-1) <= 118' && $NF=="sh"
-F '[._]+'
将一个或多个下划线或点字符设置为输入字段分隔符。我们在$NF
中获得了扩展名或最后一个字段。之前的数字可在(NF-1)th
字段中找到。
答案 1 :(得分:0)
正则表达式应该更复杂:http://regular-expressions.info/numericranges.html
这可以帮助您生成一个:http://gamon.webfactional.com/regexnumericrangegenerator
您也可以使用awk:
$ echo "app_name_117.sh" | awk -F "[_.]" '{if ($3>=117 && $3<=120) print $0}'
Awk还支持在命令行中使用-v
开关添加变量:
$ echo "app_name_117.sh" | awk -F "[_.]" -v v1=110 -v v2=120 '{if ($3>=v1 && $3<=v2) print $0}'
app_name_117.sh
$ echo "app_name_07.sh" | awk -F "[_.]" -v v1=110 -v v2=120 '{if ($3>=v1 && $3<=v2) print $0}'
# no output