grep 时使用最广泛的命令之一,用来对文本文件内荣按行进行模式匹配查找。啊如果找到匹配模式的行, grep 将打印包含模式的行。
Grep 有三种变形:
- Grep :标准 grep 命令主要讨论此格式。
- Egrep : 扩展 grep ,支持基本及扩展的正则表达式
- Fgrep :快速 grep ,允许查找字符串而不是一个模式。这里的快速并不是速度快
Grep 的用法
1) grep Usage: grep [OPTION] regular_expressions [filename1 …]
regular_expressions: 是正则表达式,一般用单引号吧正则表达式括起来。当然,也可以不使用正则表达式而使用字符串,使用字符串时一般用双引号把字符串括起来。
Filename1…: 文件名列表, grep 将对这些路指定的而文件的内容进行匹配查找,如果文件名列表省略, grep 将从标准化输入读取要匹配查找的内容。
2 ) grep 的常用选项
-c 只输出匹配的行的总数( count )
-i 不区分大小写(只是用与单字符)。
-h 查询多个文件时,不显示文件名。
-l 显示匹配的行及行号
-s 不显示不存在或无匹配文件等错误信息( silence )。
-v 直线式不包含匹配模式的行。,
grep 应用举例:
1) 查询多个文件,可以使用 * 。比如:
grep “ sort ” *.doc // 在所有以 doc 为后缀的文件中查找字符串“ sort ”;
grep “ linux ” * // 在当前目录下的所有文件中查找字符串“ linux ”
2 ) 精确匹配,可以在要匹配的字符串后加 /> 。
grep “48/>” data.f // 可以匹配 48 , 1248 , c48this 等不能匹配 481 , c480
3 ) 反转匹配
ps aux|grep “httpd”|grep –v “grep”// 查看正在运行的 httpd 进程
4 ) 匹配空行
grep –n ‘^$’ myfile // 打印文件中空行的行号
grep –v ‘^$’ myfile // 去除文件中空行的行号
grep 可以使用或匹配模式的类名形式
1) 常见的匹配模式的类名形式
[[:upper:]] 等价于 [A-Z]
[[:lower:]] 等价于 [a-z]
[[:digit:]] 等价于 [0-9]
[[:alnum:]] 等价于 [0-9a-zA-Z]
[[:space:]] 等价于空格或 tab 键
[[:alpha:]] 等价于 [a-zA-Z]
2) 举例: grep ‘5[[:upper:]][[:upper:]]’ data.f // 可以匹配包括 5AP196 , 5DF540 的行
可以把要匹配的模式写到一个文件中,然后使用 -f 选项,将该未能传给 grep
Eg : egrep –f grappats data.f // 要匹配的模式存放在温江 grappats 中
可以在 grep 的模式字符串中使用 (|) ,意即“ | ”符号两边之一或全部,可以使用人一多“ | ”,可以同时使用 ^ 符号排除字符串
Eg : who|grep ‘(zqf|zqc|zqx)’ // 查看是否 zqf zqc zqx 三者中是否有在线的
如果传递给 grep 的文件名参数是不是一个普通文件而不是一个目录的话,要使用 ”-d” 选项。
1) Usage : grep –d [ACTION] directory_name
2) ACTION:ACTION 用来指定作为输入文件的目录文件的处理方式, AXTION 有 3 个可选项: read :把目录文件当作普通文件来读取,是选项省略时的默认方式; skip :目录将被忽略而跳过; recurse : grep 以递归的方式读取命令下的每一个文件。等同于选项“ -r ”。
3) 举例 grep –r|”etho” /etc // 查看 /etc 目录中于“ eth0 ”有关的文件的文件名