RE:Regular Expression,用来描述规则的表示法。
grep:基于RE的文本搜索工具
如果你想要只查找行首为“the”的字符行,则使用以下命令
$ grep -n '^the' 文件名 (-n 表示按行输出)
表示’the‘前面没有符号。
'^[A-Z]' 表示以大写字母开头。
'[^A-Z]' 表示除了大写字母 A-Z 的所有字符。
查找以 e 字母结尾的行:
grep -n 'e$' 文件名
查找空行:
$ grep -n '^$' 文件名
注: $表示空
| 运算符
管道符号,是unix一个很强大的功能,符号为一条竖线:"|"。
用法:
command 1 | command 2
他的功能是把第一个命令command 1执行的结果作为command2的输入传给command 2,例如:
$ls -s|sort -nr (请注意不要复制$符号进去哦)
-s 是file size,-n是numeric-sort,-r是reverse,反转
该命令列出当前目录中的文档(含size),并把输出送给sort命令作为输入,sort命令按数字递减的顺序把ls的输出排序。
$ grep -n 'b.fo.e' 文件名
‘b.fo.e’ : 小数点表示任意一个字符,一个小数点只能表示一个未知字符。
(星号):代表重复前面 0 个或者多个字符。
g: 表示具有空字符或者一个以上 g 字符。
gg,表示前面的第一个 g 字符必须存在。第二个 g 则可以是 0 个或者多个 e 字符。
ggg,表示前面两个 g 字符必须存在。第三个 g 则可以是 0 个或者多个 g 字符。
gg*g :表示前面的第一个与第三个 g 字符必须存在。第二个 g 则可以是 0 个或者多个 g 字符。
下面的第一条命令与第二条命令由于允许存在空字符,所以会打印所有文本。
$ grep -n 'g*' 文件名
$ grep -n '@*' 文件名
$ grep -n 'ggg*' 文件名
查找行首为大写字母的所有行:
$ grep -n '^the' 文件名
'^[A-Z]' 表示以大写字母开头。
'[^A-Z]' 表示除了大写字母 A-Z 的所有字符。
查找连续的两个 g 字符:
$ grep -n 'g{2}' 文件名
结果与命令 grep -n ‘ggg*’ 文件名 的结果相同。
查找 o 后面接 2 到 5 个 g,然后再接 g 的字符串
$ grep -n 'og{2,5}g' 文件名
总结:
^word 表示带搜寻的字符串(word)在行首
word$ 表示带搜寻的字符串(word)在行尾
.(小数点) 表示 1 个任意字符
\ 表示转义字符,在特殊字符前加\会将特殊字符意义去除
表示重复 0 到无穷多个前一个 RE(正则表达式)字符
[hello] 表示搜索含有 h,e,l,l,o 的任意字符的字符串
[n1-n2] 表示搜索指定的字符串范围,例如[0-9] [a-z] [A-Z]等
[^hello] 表示反向字符串的范围,例如 [^0-9] 表示非数字字符, [^A-Z] 表示非大写字符范围
{n,m} 表示找出 n 到 m 个前一个 RE 字符
{n,} 表示 n 个以上的前一个 RE 字符