使用grep查找以$开头的模式

时间:2016-03-24 15:40:00

标签: regex linux unix grep

我需要找到一个以$开头的模式,后跟两个数字,一个不是数字的单个字符,以及其他任何内容。

我知道如何找到一个以美元符号开头的模式,然后是两个数字,但我无法弄清楚如何检查一个不是数字的字符。

我还需要计算这种模式有多少行。

到目前为止,我有这个:

grep -Ec '\$[0-9][0-9].....

我不知道该怎么做。有人可以帮忙吗?任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

插入符号反转选择组,因此如果[0-9]为“匹配任何数字”,则[^0-9]为“匹配任何非数字”。

答案 1 :(得分:1)

您可以尝试使用此正则表达式\$[0-9][0-9][^0-9].*

\$[0-9][0-9][^0-9].*

  • \ $匹配字符$ literally
  • [0-9]匹配下面列表中的单个字符。 0-9 0到9之间范围内的单个字符
  • [0-9]匹配下面列表中的单个字符。 0-9 0到9之间范围内的单个字符
  • [^ 0-9]匹配下面列表中不存在的单个字符。 0-9 0到9之间范围内的单个字符
  • 。*匹配任何字符(换行符除外) 量词:*在零和无限次之间,尽可能多次,根据需要回馈[贪心]

答案 2 :(得分:0)

我会第二个@realspirituals回答,如果你需要计算这个模式有多少行,你可以通过管道到grep来计算输出的行数wc -l。为了显示线条并一举计算它们,像这样管道输出

grep "\$[0-9]{2}[^0-9].*" | tee >(wl -l)

tee将在wlSTDOUT之间拆分输出。 {2}会导致之前的[0-9]匹配两次。