反向查找

-v
–invert-match
?
查找没有被匹配到的内容

pattern 指定 -e pattern

-e pattern

perl 格式 regexp -P

-P

特点:

  1. 支持 extended regexp 的全套功能

    • eg: [[:digit:]]+
  2. 支持类似 python regex 的功能

    • eg: \d+(\.\d+)?G
  3. 有限制的 perl regexp 功能实现

    • 部分perl regexp 功能grep 可能没有实现

扩展的(extended regular expression)regexp -E

-E

特点:

  1. 在 basic regexp 模式下

    • ? + ( ) { }: 这些运算符出去了特殊意义,需要通过转义符使用它们的运算符功能, eg: \+
    • 注意: * 还可以直接作为运算符使用
  2. 在 extended regexp 模式下

    • ? + ( ) { } 可以当作运算符直接使用

字符集 character classes

  1. python 中的字符集用法失效

    • \d \w 等无法使用
  2. 支持的字符集写法:

    • [:alpha:], [:digit:], [:alphanum:]
    • 注意:上面的字符集不能够直接使用,而要包括在 [] 内部使用, 比如: [:digit:]

例子

8.7G    /home/sawyer/.cache/uv
8.0K    /home/sawyer/.cache/venv-selector

匹配开头的 8.7G

  1. 使用basic regexp

    1
    2
    
    du -hs ~/.cache/*|grep -e '^[[:digit:]]\+\.[[:digit:]]\+G'
    du -hs ~/.cache/*|grep -e '^[[:digit:]]*\.[[:digit:]]*G'
  2. 使用 extended regexp

    1
    2
    3
    4
    
    ❯ du -hs ~/.cache/*|grep -e '^[[:digit:]]+\.[[:digit:]]+G' -E
    4.7G    /home/sawyer/.cache/huggingface
    2.3G    /home/sawyer/.cache/torch
    8.7G    /home/sawyer/.cache/uv
  3. 使用 perl regexp

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    ❯ du -hs ~/.cache/*|grep -e '^[[:digit:]]+\.[[:digit:]]+G' -P
    4.7G    /home/sawyer/.cache/huggingface
    2.3G    /home/sawyer/.cache/torch
    8.7G    /home/sawyer/.cache/uv
    
    
    ❯ du -hs ~/.cache/*|grep -e '^\d+\.\d+G' -P
    4.7G    /home/sawyer/.cache/huggingface
    2.3G    /home/sawyer/.cache/torch
    8.7G    /home/sawyer/.cache/uv