在 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 的正则表达式模式中量词的正确语法?的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式与grep命令

[Linux 006]——grep和正则表达式

Linux grep 命令中的正则表达式详解

bash:在 shell 脚本中使用正则表达式查找和 grep

shell脚本——正则表达式(包含grep详细介绍及应用)

shell grep命令的多个正则表达式 组合使用。