linux(8)

来源:互联网 发布:web数据库测试 编辑:程序博客网 时间:2024/06/07 03:39

1.grep – 在文本文件中查找一个指定的正则表达式,并把匹配行输出到标准输出

-i 忽略大小写。不会区分大小写字符。也可用 –ignore-case 来指定。

-v 不匹配。通常, grep 程序会打印包含匹配项的文本行。这个选项导致 grep 程序只会不包含匹配项的文本行。也可用–invert-match 来指定。

-c 打印匹配的数量(或者是不匹配的数目,若指定了 -v 选项),而不是文本行本身。也可用 –count 选项来指定。

-l 打印包含匹配项的文件名,而不是文本行本身,也可用–files-with-matches 选项来指定。

-L 相似于 -l 选项,但是只是打印不包含匹配项的文件名。也可用 –files-without-match 来指定。

-n 在每个匹配行之前打印出其位于文件中的相应行号。也可用–line-number 选项来指定。

-h 应用于多文件搜索,不输出文件名。也可用 –no-filename选项来指定。

2.元字符和文本

正则表达式元字符由以下字符组成:

^ $ . [ ] { } - ? * + ( ) | \

然后其它所有字符都被认为是原义字符

  • 任何字符:. 匹配在此位置的任意一个字符
$ grep -h '.zip' dirlist*.txt
  • 锚点:插入符号和美元符号被看作是锚点,只有在文本行的开头或末尾被找到时,才算发生一次匹配
$ grep -h '^zip' dirlist*.txt$ grep -h 'zip$' dirlist*.txt
  • 中括号表达式和字符类
    中括号表达式能够指定一个字符集合来被匹配
$ grep -h '[bg]zip' dirlist*.txt
  • 否定
$ grep -h '[^bg]zip' dirlist*.txt
  • 传统的字符区域
$ grep -h '^[A-Za-z0-9]' dirlist*.txt
  • POSIX 字符集

[:alnum:] 字母数字字符。在 ASCII 中,等价于: [A-Za-z0-9]

[:word:] 与 [:alnum:] 相同, 但增加了下划线字符。

[:alpha:] 字母字符。在 ASCII 中,等价于: [A-Za-z]

[:blank:] 包含空格和 tab 字符。

[:cntrl:] ASCII 的控制码。包含了 0 到 31,和 127 的 ASCII 字符。

[:digit:] 数字 0 到 9

[:graph:] 可视字符。在 ASCII 中,它包含 33 到 126 的字符。

[:lower:] 小写字母。

[:punct:] 标点符号字符。在 ASCII 中,等价于:

[:print:] 可打印的字符。在 [:graph:] 中的所有字符,再加上空格字符。

[:space:] 空白字符,包括空格, tab,回车,换行, vertical tab, 和form feed. 在 ASCII 中,等价于: [ \t\r\n\v\f]

[:upper:] 大写字母。

[:xdigit:] 用来表示十六进制数字的字符。在 ASCII 中,等价于:[0-9A-Fa-f]

$ ls /usr/sbin/[[:upper:]]*
  • ? - 匹配零个或一个元素

  • * - 匹配零个或多个元素

  • + - 匹配一个或多个元素

  • { } - 匹配特定个数的元素

n 匹配前面的元素,如果它确切地出现了 n 次。
n,m 匹配前面的元素,如果它至少出现了 n 次,但是不多于 m次。
n, 匹配前面的元素,如果它出现了 n 次或多于 n 次。
,m 匹配前面的元素,如果它出现的次数不多于 m 次。

原创粉丝点击