获取文件的以下内容:
"52245" "528" "06156903" "52246" "530" "00584709"
什么模式可以匹配52245和52246,但没有别的?
答案 0 :(得分:17)
只能匹配这两个数字的东西:
^\"5224[56]\"$
现在,如果你正在寻找更通用的东西(例如,任何5位数的数字),你会想要像
这样的东西^\"\d{5}\"$
我假设引号("
)是文件的一部分。如果不是,请忽略表达式中的\"
部分。
您想要的特定grep表达式是:
grep -E "^\"[[:digit:]]{5}\"$" filename
或从意见中提出建议:
grep -P "^\"\d{5}\"$" filename
我已经测试了两个,他们在我的机器上工作!
答案 1 :(得分:11)
^(52245|52246)$
你可以使用它。
答案 2 :(得分:7)
^"5224[56]"$
^"5224(5|6)"$
^"52{2}4[56]"$
^"(52245|52246)"$
...
您应该将您使用的正则表达式基于您想要表达的语义。如果您要查找两个任意数字,请使用^"(52245|52246)"$
。如果数字有任何意义 - 类型代码或类似代码 - 我会坚持使用^"5224(5|6)"$
。