我怎樣才能grep看看數字字符串是否在一個數字範圍內?在bash中的數字的grep範圍
我已經試過:
v1=110
v2=220
echo "app_name_117.sh" | grep -iEo "*.*.($v1|$v2).sh"
範圍可以是介於0和999 至今沒有運氣。
我怎樣才能grep看看數字字符串是否在一個數字範圍內?在bash中的數字的grep範圍
我已經試過:
v1=110
v2=220
echo "app_name_117.sh" | grep -iEo "*.*.($v1|$v2).sh"
範圍可以是介於0和999 至今沒有運氣。
的正則表達式應該是更復雜: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
它的工作。謝謝! –
這是更好地使用awk
代替grep
比較的數值範圍:
echo "app_name_117.sh" | awk -F '[._]+' '$(NF-1) >= 116 && $(NF-1) <= 118' && $NF=="sh"
-F '[._]+'
集的一個或多個下劃線或點的字符作爲輸入字段分隔符。我們在$NF
獲得延期或最後一個字段。此前的數字可在(NF-1)th
字段中獲得。
除grep外還有其他解決方案嗎? –