ubuntu命令行中的正则表达式

时间:2014-11-20 20:22:08

标签: regex linux

您好,我有一个相当简单的问题,我只想搜索最后一个' 1 + 1'在此声明的=符号之前

1+1+1+1+1+1=6

我尝试过grep语句

`grep '.+' 'text.txt'`

它返回

1+1+1+1+1+

因为它突出显示所有+符号。我相信我需要创建一个最小范围,例如: grep '.+{4,}' 'text.txt'这不起作用,任何人都可以解释原因吗?一个解释的解决方案将不胜感激。

由于

2 个答案:

答案 0 :(得分:1)

+是一个元字符,表示“前一个匹配中的一个或多个”。当你说.+时,你说的是“任何角色,然后是一个或多个角色。”

如果要搜索文字元字符,则必须使用反斜杠对其进行转义。

grep '.\+' text.txt

答案 1 :(得分:1)

要获取最后一个+ - 表达式,您可以使用grep -o并将其输入tail -1

grep -o '[0-9]+[0-9]' <<< '1+1+1+1+2+1=6' | tail -1

此正则表达式匹配一个数字(介于0到9之间)[0-9],后跟一个文字+符号,后跟一个数字。这将匹配表达式字符串的多个部分。 -o选项在单独的行上打印每个匹配,tail选择这些行中的最后一行。

如果表达式位于文件text.txt中,请使用:

grep -o '[0-9]+[0-9]' text.txt | tail -1