在 Solaris 中使用 grep 的正则表达式模式中量词的正确语法?
Posted
技术标签:
【中文标题】在 Solaris 中使用 grep 的正则表达式模式中量词的正确语法?【英文标题】:The correct syntax of a quantifier in a regular expression pattern with grep in Solaris? 【发布时间】:2013-05-14 16:49:15 【问题描述】:我必须在许多包含几行的文件中搜索,这些行的电话号码正好是十位数。行示例:
telephoneNumber: 66727166501
telephoneNumber: 6672716650
telephoneNumber: 66727166
telephoneNumber: 6672716651
所以我期待这些行:
telephoneNumber: 6672716650
telephoneNumber: 6672716651
我正在使用下一个 grep 指令进行搜索:
grep '^telephoneNumber: [0-9]\10\$' file.txt
它在 Ubuntu、OpenSuse 和 Cygwin 中运行良好,但是当我在 Solaris 中运行它时,它不匹配,如果删除模式末尾的 $
,它确实匹配,但正在使用它比如“至少 10 位数字”
有什么建议吗?
【问题讨论】:
尝试在样本数据上使用grep '^telephoneNumber: [0-9]\10\[^\d]*' file.txt
看看会发生什么?输出可能表明了什么。
感谢您的帮助,但我终于找到了答案,我会在几个小时内告诉您
【参考方案1】:
问题的原因很简单,我没有意识到,因为就像我说的那样,我在不同的发行版中运行命令没有问题(我不知道为什么),而且我没有检查文件文本编辑器中的选项
问题是要应用搜索的文件的 EOL,原始文件没有 Unix 格式,很遗憾,这些文件的创建不在我的控制之下
【讨论】:
以上是关于在 Solaris 中使用 grep 的正则表达式模式中量词的正确语法?的主要内容,如果未能解决你的问题,请参考以下文章