[关闭]
@llplmlyd 2019-09-30T16:32:49.000000Z 字数 1032 阅读 696

grep

Linux


command options

  1. -i --ignore-case #忽略字符大小写的差别
  2. -n 显示匹配的行号
  3. -e 实现多个选项间的逻辑or 关系
  4. -E 扩展的正则表达式
  5. -o only 仅显示匹配到的字符串
  6. -v 显示不被pattern 匹配到的行,相当于[^] 反向匹配
  7. -w 匹配 整个单词
  8. -c:统计匹配的行数

字符匹配

-w \(\) [] ""

  1. -w 以单词的形式来匹配,单独一个整体,如匹配is则下面这两行只有1可以出现在结果里:
  2. 1is is
  3. 2isais
  4. 3ia
  5. 4s1
  6. 5abc
  7. \(\) 组概念 ,可以是一个组成部分,这个匹配is的时候,可以出现1 2两行
  8. [] 匹配括号里面的每个字符,使用这个匹配is的时候,是出现1 2 3 4 四行的,只要含有 is都算匹配成功
  9. "" 双引号在使用除[]外的其他匹配规则的时候需要使用""

[]

  1. . 匹配任意单个字符,不能匹配空行
  2. [] 匹配指定范围内的任意单个字符
  3. [^] 取反
  4. [:alnum:] [0-9a-zA-Z]
  5. [:alpha:] [a-zA-Z]
  6. [:upper:] [A-Z]
  7. [:lower:] [a-z]
  8. [:blank:] 空白字符(空格和制表符)
  9. [:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
  10. [:cntrl:] 不可打印的控制字符(退格、删除、警铃...)
  11. [:digit:] 十进制数字 或[0-9]
  12. [:xdigit:]十六进制数字
  13. [:graph:] 可打印的非空白字符
  14. [:print:] 可打印字符
  15. [:punct:] 标点符号

次数匹配

次数匹配,单字符(如果不使用组的概念),连续性匹配

  1. * 匹配前面的字符任意次,包括0次,贪婪模式:尽可能长的匹配
  2. .* 任意长度的任意字符,不包括0
  3. \? 匹配其前面的字符0 1
  4. \+ 匹配其前面的字符至少1
  5. \{n\} 匹配前面的字符n
  6. \{m,n\} 匹配前面的字符至少m 次,至多n
  7. \{,n\} 匹配前面的字符至多n
  8. \{n,\} 匹配前面的字符至少n

定位匹配

  1. ^ 行首锚定,用于模式的最左侧
  2. $ 行尾锚定,用于模式的最右侧
  3. ^PATTERN$,用于模式匹配整行
  4. ^$ 空行
  5. ^[[:space:]].*$ 空白行
  6. \< \b 词首锚定,用于单词模式的左侧
  7. \> \b 词尾锚定;用于单词模式的右侧
  8. \<PATTERN\>

扩展正则表达

  1. . 任意单个字符
  2. [] 指定范围的字符
  3. [^]不在指定范围的字符
  1. * 匹配前面字符任意次
  2. 0/1
  3. + 至少1
  4. {m}匹配m
  5. {m,n}至少m,至多n
  1. ^ 行首
  2. $ 行尾
  3. \<,\b:语首
  4. \>,\b:语尾
  5. 分组:()
  6. 后向引用 \1 \2

分组和向后引用

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注