Shell脚本linux,验证整数

时间:2013-08-26 15:46:52

标签: regex linux bash shell grep

此代码用于检查字符是否为整数(我认为)。我试图理解这意味着什么,我的意思是......该行的每个部分,检查GREP手册页,但这对我来说真的很难。我在互联网上找到了它。如果有人能解释我grep的那部分...那么每件东西都放在那里意味着什么:

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

谢谢大家!!!

2 个答案:

答案 0 :(得分:4)

分析这个正则表达式:

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

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

总体而言,它匹配+123-987659

等字符串

这里-E用于扩展正则表达式支持,-q用于grep命令中的安静。

PS:顺便说一句,这项检查不需要grep,可以直接在纯bash中执行此操作:

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

答案 1 :(得分:0)

我喜欢这张正则表达式的备忘单:
http://www.cheatography.com/davechild/cheat-sheets/regular-expressions/

非常有用,您可以轻松分析

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

作为

  • ^:行必须以......开头
  • ():分组
  • \:ESC字符(因为+意味着什么......见下文)
  • + | - :加上OR减号
  • ?:0或1次重​​复
  • [0-9]:0-9
  • 之间的数字范围
  • +:一次或多次重复
  • $:行尾(不允许更多字符)

所以它接受如下:-312353243或+1243或5678
但不接受:3 456或6.789或56 $(作为美元符号)。