6.11.10 grep 命令:在文件中搜索指定的字符串
grep命令是"global regular expression print"的缩写,用于在文件中搜索指定的字符串模式,列出含有匹配模式字符串的文件名,并输出含有该字符串的文本行,命令格式为:
- grep [选项] [查找模式][文件名……]
其中各可用选项意义如下。
-F:将查找模式看成是单纯的字符串。
-i:要查找的字符串不区分字母的大小写。
-r:以递归方式查询目录下的所有子目录的文件。
-n:标出包含指定字符串的行编号。
例如在文件example中查找包含"aa"字符串的行,命令如下:
- # cat example
- aa bb cc dd
- aa bb ff
- ee
- # grep aa example
- aa bb cc dd
- aa bb ff
如果待查找的字符串模式的字数大于1,则必须在字符串模式两边使用单引号,否则系统会只把第一个字作为搜索目录,如:
- # cat example
- aa bb cc dd
- aa bb ff
- ee
- # grep bb cc example
- grep: cc: 没有那个文件或目录
- example:aa bb cc dd
- example:aa bb ff
- # grep 'bb cc' example
- aa bb cc dd
例如在/passwd文件中查找包含"teacher"字符串的行,命令为:
- #grep -F teacher /etc/passwd
- teacher:*:500:500: teacher:/home/ teacher:/bin/bash
再如在file1中查找包含"print" 字符串的所有行,不管字符的大小写,命令行如下:
- # grep -i 'print' file1
又如查找包含字符串"bb cc"的行,输出该行,并输出该行所在的行号,命令为:
- # cat example
- aa bb cc dd
- aa bb ff
- ee
- # grep -n 'bb cc' example
- 1:aa bb cc dd
通常grep命令配合管道符(|)还可用来作为其他命令的输入,例如统计指定文件中包含某字符串的行数、字数和字节数:
- # cat example
- aa bb cc dd
- aa bb ff
- ee
- # grep 'bb' example | wc
- 2 7 21
grep命令除了作为其他命令的输入,也可以作为一些命令(例如ls,ps)的输出。例如在当前运行的进程中查找vi程序的进程信息,命令行如下:
- # ps aux | grep vi
- root 5716 0.0 0.2 4956 736 pts/1
T Jul25 0:00 vi - root 20681 0.3 0.4 4960 1012 pts/1
T 14:21 0:00 vi - root 20689 5.0 0.2 4132 668 pts/1
R+ 14:22 0:00 grep vi
注意:还有两个命令与grep非常相似。一个是"egrep",表示Extend grep,执行效率比grep高,但需占用较大的内存空间;另一个是"fgrep",占用空间比egrep小,且速度也比grep快。由于三个命令的结构、功能类似,因此大部分参数可以共享。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15142212/viewspace-675048/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/15142212/viewspace-675048/