通配符
符号 | 意义 |
---|---|
* | 代表{0到无穷多个}任意字符 |
? | 代表{一定有一个}任意字符 |
[ ] | 同样代表『一定有一个在括号内』的字符(非任意字符)。例如 [abcd] 代表『一定有一个字符, 可能是 a, b, c, d 这四个任何一个』 |
- | 若有减号在中括号内时,代表『在编码顺序内的所有字符』。例如 [0-9] 代表 0 到 9 之间的所有数字 |
^ | 若中括号内d 第一个字符为符号 (^) ,那表示『反向选择』,例如 [^abc] 代表 一定有一个字符,叧要是非 a, b, c d 其他字符就接受的意思。 |
grep
grep [-acinv] [--color=auto] '搜寻字符串' filename
-a :将 binary 档案以 text 档案的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不同
-n :顺便输出行号
-v :反向选择,即显示出没有 '搜寻字符串' 内容的那一行!
--color=auto :可以将找到的关键词部分加上颜色显示!
-A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
-B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
-C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
-d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
-e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。
-E 或 --extended-regexp : 将样式为延伸的正则表达式来使用。
-f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
-F 或 --fixed-regexp : 将样式视为固定字符串的列表。
-G 或 --basic-regexp : 将样式视为普通的表示法来使用。
-h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
-H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
-l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。
-L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。
-o 或 --only-matching : 只显示匹配PATTERN 部分。
-q 或 --quiet或--silent : 不显示任何信息。
-r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。
-s 或 --no-messages : 不显示错误信息。
-V 或 --version : 显示版本信息。
-w 或 --word-regexp : 只显示全字符合的列。
-x --line-regexp : 只显示全列符合的列。
-y : 此参数的效果和指定"-i"参数相同。
grep -n --color=auto 'abc' test
#提取test中所有以abc开头的行,并输出行号
image.png
grep -n -v --color=auto 'abc' test
image.png
grep搭配通配符以及正则表达式的使用
image.png如果我们想要搜寻 test 和 taste 这两个单词时,可以发现其实它们有共同的 't?st' 存在,所以我们可以这样来实现
grep -n 't[ae]st' test1
image.png
搜索包含oo但不包含g的行
grep -n 'oo' test1
grep -n [^g]'oo' test1
image.png
grep -n '^[A-Z]' test1#搜索所有以小写字母开头的行
grep -n '^[^a-zA-Z]' test1#搜索所有非字母开头的行
image.png
注意到了吧?那个 ^ 符号,在字符集合符号(括号[])之内与之外是不同的! 在 [ ] 内代表『反向选择』,在 [ ] 外则代表定位在行首的意义!
利用限定符{}精确查找
grep -n 'o\{1,2\}' test1
image.png
网友评论