您好,我有一个相当简单的问题,我只想搜索最后一个' 1 + 1'在此声明的=符号之前
1+1+1+1+1+1=6
我尝试过grep语句
`grep '.+' 'text.txt'`
它返回
1+1+1+1+1+
因为它突出显示所有+符号。我相信我需要创建一个最小范围,例如:
grep '.+{4,}' 'text.txt'
这不起作用,任何人都可以解释原因吗?一个解释的解决方案将不胜感激。
由于
答案 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