0

This code is for check if a character is a integer or not (i think). I'm trying to understand what this means, I mean... each part of that line, checking the GREP man pages, but it's really difficult for me. I found it on the internet. If anyone could explain me the part of the grep... what means each thing put there:

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

Thanks people!!!

4

2 回答 2

4

分析这个正则表达式:

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

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

总体而言,它匹配类似+123or-98765或 just之类的字符串9

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

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

re='^(\+|-)?[0-9]+$'
[[ "$character" =~ $re ]] && echo "its an integer"
于 2013-08-26T15:50:49.950 回答
1

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

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

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

作为

  • ^: 行必须以...开头
  • (): 分组
  • \:ESC 字符(因为 + 表示某些东西……见下文)
  • +|-:加号或减号
  • ?: 0 或 1 次重复
  • [0-9]:数字范围从 0-9
  • +:一次或多次重复
  • $:行尾(不允许更多字符)

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

于 2013-08-26T18:53:46.873 回答