【问题标题】:Shell script linux, validating integerShell脚本linux,验证整数
【发布时间】:2013-08-26 15:46:52
【问题描述】:

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

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

谢谢大家!!!

【问题讨论】:

    标签: regex linux bash shell grep


    【解决方案1】:

    分析这个正则表达式:

    '^(\+|-)?[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"
    

    【讨论】:

    • 谢谢伙计……我正在努力理解 linux 中的所有这些东西,我对此很陌生……我会继续尝试
    • 在这里我找到了这个,给需要的人:tldp.org/LDP/abs/html/x17046.html
    【解决方案2】:

    我喜欢这个正则表达式备忘单:
    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$(作为美元符号)。

    【讨论】:

      猜你喜欢
      • 2017-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      相关资源
      最近更新 更多