grep

  • 作用:文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文本逐行进行匹配检查;打印匹配到的行;
    grep文本过滤工具
  • 模式:由正则表达式的元字符及文本字符所编写出的过滤条件;

语法结构:

  • grep [OPTIONS] PATTERN [FILE…] PATTERN 模式

  • grep [OPTIONS ] [-e PATTERN | -f FILE] [FILE…]

命令选项:

  • –color=auto:对匹配到的文本着色后高亮显示;
    grep文本过滤工具
  • -i:ignorecase,忽略字符的大小写;
  • -o:仅显示匹配到的字符串本身;
    grep文本过滤工具
  • -v, --invert-match:显示不能被模式匹配到的行;
    grep文本过滤工具
  • -E:支持使用扩展的正则表达式元字符;
  • -q, --quiet, --silent:静默模式,即不输出任何信息;
  • -n,显示行号
    grep文本过滤工具
  • -A #:after, 后#行
    grep文本过滤工具
  • -B #:before,前#行
    grep文本过滤工具
  • -C #:context,前后各#行
    grep文本过滤工具

基本正则表达式元字符:

1、字符匹配:

  • . :匹配任意单个字符; 类似glob中的?
    grep文本过滤工具

  • []:匹配指定范围内的任意单个字符;

  • [^]:匹配指定范围外的任意单个字符; 脱字符

  • [:digit:]、数字[:lower:]、小写字母[:upper:]、大写字母[:alpha:]所有字母、[:alnum:]数字和字母、[:punct:]所有标点符号、[:space:]空格
    grep文本过滤工具
    2、匹配次数:

用于要指定出现的次数的字符后面,用来限制其前面字符出现的次数

grep “r[[:alpha:]][[:alpha:]]t” /etc/passwd rt中间匹配两个字母

  • *:匹配其前面的字符任意次;0,1,多次
    grep文本过滤工具

  • .*:匹配任意长度的任意字符
    grep文本过滤工具

  • ?:匹配其前面的字符0次或1次;即其前面的字符是可有可无的;
    grep文本过滤工具

  • +:匹配其前面的字符1次或多次;即其面的字符要出现至少1次;
    字符m次;
    grep文本过滤工具

  • {m,n}:匹配其前面的字符至少m次,至多n次;
    grep文本过滤工具

  • {0,n} :至多n次
    grep文本过滤工具

  • {m,} :至少m次

3、位置锚定:

  • ^:行首锚定;用于模式的最左侧; 脱字符
    Grep “^root” /etc/passwd
    grep文本过滤工具

  • -$:行尾锚定;用于模式的最右侧
    grep文本过滤工具

  • ^PATTERN$:用于PATTERN来匹配整行;

  • ^$:空白行;

  • 1*$ :空行或包含空白字符的行;

  • < 或\b:词首锚定,用于单词模式的左侧;

  • > 或\b:词尾锚定,用于单词模式的右侧;

  • <PATTERN>:匹配完整单词;
    grep文本过滤工具

练习:

1、显示/etc/passwd文件中不以/bin/bash结尾的行;
grep文本过滤工具

2、找出/etc/passwd文件中的两位数或三位数;
grep文本过滤工具
4、分组及引用

  • ():将一个或多个字符捆绑在一起,当作一个整体进行处理;
    grep文本过滤工具
  • (xy)*ab 命令行中括号有特殊意义所以用转义符\

Note:分组括号中的模式匹配 到的内容会被正则表达式引擎自动记录于内部的变量中,这些变量为:
grep文本过滤工具

  • \1:模式从左侧起,第一个左括号以及与之匹配的右括号之间的模式所匹配到的字符;
    grep文本过滤工具
  • \2:模式从左侧起,第二个左括号以及与之匹配的右括号之间的模式所匹配到的字符;
    grep文本过滤工具
    5、或者|

a|b在|两边a和b是独立的


  1. [:space:] ↩︎

相关文章: