2017-07-31 193 views
2

我怎樣才能grep看看數字字符串是否在一個數字範圍內?在bash中的數字的grep範圍

我已經試過:

v1=110 
v2=220 
echo "app_name_117.sh" | grep -iEo "*.*.($v1|$v2).sh" 

範圍可以是介於0和999 至今沒有運氣。

+0

除grep外還有其他解決方案嗎? –

回答

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 
+0

它的工作。謝謝! –

2

這是更好地使用awk代替grep比較的數值範圍:

echo "app_name_117.sh" | awk -F '[._]+' '$(NF-1) >= 116 && $(NF-1) <= 118' && $NF=="sh" 

-F '[._]+'集的一個或多個下劃線或點的字符作爲輸入字段分隔符。我們在$NF獲得延期或最後一個字段。此前的數字可在(NF-1)th字段中獲得。