详解grep命令
- 0 引言
- 1 grep命令详解
- 2 示例
- 3 高级应用
- 3.1 多条件联合搜索
- 3.2 和find并用
0 引言
在前面我们讲解了whereis命令,locate命令以及find命令。他们是在文件系统搜索满足一定条件的文件。在日常的工作中,我们还有一个十分常见的需求,就是在指定的文件查找指定的字符串。我们可以使用grep命令来完整这个需求。
1 grep命令详解
作用:查找文件里符合条件的字符串。 格式:grep -参数 文件 常用的参数: -c显示文件中包含搜索内容的行数。 -n列出所有匹配的行,并在最前面添加要查找的内容出现在文件的第几行。 -v显示文件中不包含所搜索内容的行数,与参数c相反 -i搜索时忽略大小写 -l列出包含所搜索内容的文件的文件名 -r对当前目录和子目录进行递归搜索 -w精确搜索,完全匹配。比如:grep -w b* a.txt:此命令执行时,*不会默认为任何字符,只表示字面意思,就是一个*字符. -x只显示匹配的内容,而不是整行。
2 示例
首先工作目录下存在如下文件:
文件内容分别为:
- 查找前缀有“test”的文件包含“test”字符串的文件,把打印包含test的行。
- 查找前缀有“test”的文件包含“test”字符串的行数。
- 可以看到,testfile1有1行包含test的内容。testfile_2有两行包含test的内容。
- 查找前缀有“test”的文件包含“test”字符串的文件,把打印包含test的行。并显示查找结果处于文件的第几行。
- 可以看到,testfile1有1行包含test的内容,位于文件的第一行。testfile_2有两行包含test的内容,分别位于文件的第二行和第三行。
- 查找前缀有“test”的文件不包含“test”字符串的文件,把打印包含test的行。
- 查找前缀有“test”的文件包含“test”字符串的文件,把打印包含test的行,查找的过程忽略大小写。
- 查找前缀有“test”的文件,列出包含“test”字符串的文件的文件名。
- testfile1和testfile_2中还有test字符串。
- 对当前目录进行递归搜索,列出包含test字符串的行。
- 查找前缀有“test”的文件包含“test”字符串的文件,把打印包含test的行。查找的过程进行精确匹配。
- 可见testfile1包含的testfile和testfile_2包含的testing都没有被列出来。
- 查找前缀有“test”的文件,是否包含内容为test的行。
- 可见搜索结果没有内容。对testfile_2修改,添加test行。
- 再次进行搜索,查找到结果。
注意:,如果搜索内容中有空格,则需要使用单引号或者双引号把搜素内容引起来,比如: grep “hello all” a.txt或者grep ‘hello all’ a.txt,如果不加单双引号,则提示搜搜错误,无法识别,因为不加引号,直接grep hello all a.txt,表示在all 和a.txt中搜索hello,
3 高级应用
3.1 多条件联合搜索
3.2 和find并用
参考内容:
- inux之grep命令
- Linux grep 命令
- grep命令