2013-08-26 104 views
0

此代碼用於檢查一個字符是否爲整數(我認爲)。我試圖理解這意味着什麼,我的意思是......該行的每一部分,檢查GREP手冊頁,但對我來說真的很難。我在網上找到它。如果任何人都可以解釋我的grep的部分......拿什麼每樣東西放在那裏:shell腳本linux,驗證整數

echo $character | grep -Eq '^(\+|-)?[0-9]+$'

感謝的人!

回答

3

分析這個表達式:

'^(\+|-)?[0-9]+$' 

^ - Line Start 
(\+|-)? - Optional + or - sign at start 
[0-9]+ - One or more digits 
$ - Line End 

總的來說它匹配的字符串像+123-98765或只是9

這裏-E是擴展正則表達式的支持和-q是安靜grep命令。

PS:順便說一句,你不需要grep此檢查,可以在純bash的直接做到這一點:

re='^(\+|-)?[0-9]+$' 
[[ "$character" =~ $re ]] && echo "its an integer" 
+0

謝謝男人...即時通訊試圖瞭解所有這些東西在Linux中,我很新這個..我會繼續努力 –

+0

不客氣,很高興它爲你工作。 – anubhava

+1

在這裏,我發現這一點,任何需要它的人:http://tldp.org/LDP/abs/html/x17046.html –

0

我喜歡這個正則表達式小抄:
http://www.cheatography.com/davechild/cheat-sheets/regular-expressions/

它是非常有用的,你可以很容易的分析

'^(+ | - )?[0-9] + $'

  • ^:行必須開始...
  • ():分組
  • \:ESC字符(因爲+意味着什麼......見下文)
  • + | - :加號或減號
  • :0或1 repetation
  • [0-9]:從0-9
  • +號的範圍:一個或多個repetation
  • $:行尾(不允許多個字符)

所以接受這樣的:-312353243或1243或5678
但不接受:3 456或6.789或56 $(如美元符號) 。