`

Linux中grep命令的12个实践例子

 
阅读更多

  grep是每个Linux发行版都预装的一个强有力的文件模式搜索工具。无论何种原因,如果你的系统没有预装它的话,你可以很容易的通过系统的包管理器来安装它(Debian/Ubuntu系中的apt-get和RHEl/CentOS/Fedora系中的yum)。

 $ sudo apt-get install grep #Debian/Ubuntu $ sudo yum install grep #RHEL/CentOS/Fedora 

 

1.搜索和寻找文件

 

  假设你已经在你的电脑上安装了一个全新的Ubuntu,然后你打算卸载Python。你浏览网页寻找教程,但是你发现存在两个不同版本的Python在使用,而你不知道你的Ubuntu安装器到底在你的系统中安装了哪个版本的Python,也不知道它安装了哪些模块。解决这个烦恼只需简单的运行以下命令:

 $ sudo dpkg -l | grep -i python 

  首先,我们运行dpkg -l列出你系统上安装的.deb包。接着,我们使用管道将输出结果传输给命令grep -i python,这一步可以简单解释为把结果传输给grep然后过滤出所有含有python的项,并返回结果。–i选项用于忽略大小写,因为 grep 是大小写敏感的。使用选项-i是个好习惯,除非你打算进行更细节的搜索。

 

2.搜索和过滤文件

 

  grep还可以在一个或多个文件里用于搜索和过滤。让我们来看一个这样的情景:

 

  你的Apache网页服务器出现了问题,你不得不从许多专业网站里找一个发帖询问。好心回复你的人让你粘贴上来你的/etc/apache2/sites-available/default-ssl文件内容。假如你能移除掉所有的注释行,那么对你,对帮你的人,以及所有阅读该文件的人,不是更容易发现问题吗?你当然可以很容易的做到!只需这样做就可以了:

 $ sudo grep -v "#" /etc/apache2/sites-available/default-ssl

  选项-v是告诉grep命令反转它的输出结果,意思就是不输出匹配的项,做相反的事,打印出所有不匹配的项。这个例子中,有#的是注释行(译注:其实这个命令并不准确,包含“#”的行不全是注释行。关于如何精确匹配注释行,可以了解更多的关于正则表达式的内容。)。

 

3.找出所有的mp3文件

 

  grep命令对于过滤来自于标准输出的结果非常有用。例如,假设你的一个文件夹里面全是各种格式的音乐文件。你要找出艺术家jayZ的所有mp3格式的音乐文件,里面也不要有任何混合音轨。使用find命令再结合管道使用grep就可以完成这个魔法:

 $ sudo find . -name ".mp3" | grep -i JayZ | grep -vi "remix"" 

  在这个例子中,我们使用find命令打印出所有以.mp3为后缀名的文件,接着将其使用管道传递给grep -i过滤和打印出名字为“JayZ”的文件,再使用管道传送给grep -vi以便过滤掉含有“remix”的项。

 

4.在搜索字符串前面或者后面显示行号

 

  另外两个选项是-A和-B之间的切换,是用以显示匹配的行以及行号,分别控制在字符串前或字符串后显示的行数。Man页给出了更加详细的解释,我发现一个记忆的小窍门:-A=after、-B=before。

 $ sudo ifconfig | grep -A 4 etho
 $ sudo ifconfig | grep -B 2 UP 

 

5.在匹配字符串周围打印出行号

 

  grep命令的-C选项和例4中的很相似,不过打印的并不是在匹配字符串的前面或后面的行,而是打印出两个方向都匹配的行(译注:同上面的记忆窍门一样:-C=center,以此为中心):

$ sudo ifconfig | grep -C 2 lo

 

6.计算匹配项的数目

 

  这个功能类似于将grep输出的结果用管道传送给计数器(wc程序),grep内建的选项可以达到同样的目的:

$ sudo ifconfig | grep -c inet6 

 

7.按给定字符串搜索文件中匹配的行号

 

  当你在编译出错时需要调试时,grep命令的-n选项是个非常有用的功能。它能告诉你所搜索的内容在文件的哪一行:

$ sudo grep -n "main" setup.py 

 

8.在所有目录里递归的搜索

 

  假若你要在当前文件夹里搜索一个字符串,而当前文件夹里又有很多子目录,你可以指定一个-r选项以便于递归的搜索: 

$ sudo grep -r "function" *

 

9.进行精确匹配搜索

 

  传递-w选项给grep命令可以在字符串中进行精确匹配搜索(译注:包含要搜索的单词,而不是通配)。例如,像下面这样输入:

$ sudo ifconfig | grep -w “RUNNING” 

  将打印出含有引号内匹配项的行。另外,你还可以试一下这个:

$ sudo ifconfig | grep -w “RUN” 

  搜索这个匹配项时,若搜索的东西里面没有这样的一个单独的单词,将什么也不会返回。

 

10.在Gzip压缩文件中搜索

 

  我们还要关注一下grep的衍生应用。第一个是zgrep,这个与zcat很相似,可以用于gzip压缩过的文件。它有与grep相似的命令选项,使用方式也一样:

$ sudo zgrep -i error /var/log/syslog.2.gz 

 

11.在文件中匹配正则表达式

 

  egrep是另一个衍生应用,代表着“扩展全局正则表达式”。它可以识别更多的正则表达式元字符,例如at + ? | 和()。在搜索源代码文件时,egrep是一个非常有用的工具,还有其他的一些零碎代码文件的搜索需要,使得这样的搜索能力成为必需。可以在grep命令中使用选项-E来启用它。

 

$ sudo grep -E

 

12.搜索一个固定匹配字符串

 

  fgrep用于在一个文件或文件列表中搜索固定样式的字符串。功能与grep -F同。fgrep的一个通常用法为传递一个含有样式的文件给它:

 

$ sudo fgrep -f file_full_of_patterns.txt file_to_search.txt 
分享到:
评论

相关推荐

    grep是linux中使用最广泛的命令

    ### grep命令详解与实践 #### 一、grep命令概述 grep是Linux系统中一个非常重要的命令工具,主要用于在文件中搜索指定的模式(pattern),并将包含该模式的行输出到标准输出。它不仅可以用于简单的文本查找,还可以...

    linux命令大全,以及例子

    在Linux操作系统中,掌握命令行工具是至关...通过实践和查阅手册页(man命令),你可以进一步深入理解每个命令的用法和选项。记住,Linux的学习是一个持续的过程,随着经验的积累,你会逐渐发现更多实用的命令和技巧。

    Linux常用命令100个

    这里我们将详细探讨标题中提到的“Linux常用命令100个”的部分核心知识点。 1. **ls**:`ls`命令用于列出目录下的文件。通过`ls -l`我们可以查看文件的详细信息,包括权限、所有者、大小、时间戳等;`ls -a`会显示...

    Linux教程—命令和例子

    Linux教程—命令和例子 在信息技术领域,Linux操作系统是一个广泛使用的开源系统,尤其在服务器、开发环境和嵌入式设备中。本教程旨在为初学者提供一个全面的指南,介绍Linux的基本命令及其实际应用,帮助用户熟悉...

    Linux下ps命令的10个基本例子.docx

    Linux下的`ps`命令是系统管理员和用户监控进程状态的重要工具。它能提供关于系统上运行进程的基本信息,如用户ID、CPU使用率、内存使用率以及...不断实践和探索`ps`命令的不同组合,将使你在Linux运维中更加得心应手。

    跟老男孩学linux三剑客命令V1.5

    学习grep、sed和awk这三个Linux三剑客命令的意义远不止于掌握工具本身,它更是为后续学习更高级的Linux工具和脚本编程打下坚实的基础。无论你的目标是成为一名专业的系统管理员、DevOps工程师,还是仅仅出于兴趣成为...

    LINUX全部所有命令手册

    "LINUX全部所有命令手册"包含了Linux系统中常用的所有命令,这对于学习和日常工作中查询命令用法非常有价值。 Linux命令手册通常包括以下几个部分: 1. **命令概述**:每个命令都有一个简短的概述,描述了它的基本...

    linux命令手册chm

    Linux命令手册是Linux系统用户日常操作中不可或缺的参考资料,它包含了丰富的指令,涵盖了从基本的文件操作到系统管理等各个层面。"Linux命令大全.chm"是一个帮助文档,通常以CHM(Compiled HTML Help)格式呈现,...

    Linux命令速查手册

    在IT领域,Linux操作系统是开发者、系统管理员以及技术爱好者广泛使用的平台。Linux以其开源、免费和高度可定制性而著称。...手册中提供的详细例子和解释能帮助你更好地理解和运用这些命令,提高你的Linux技能。

    Unix-Linux编程实践教程(中文清晰带书签).pdf

    《Unix-Linux编程实践教程》是一本面向程序员和系统管理员的实用指南,旨在通过丰富的实例深入浅出地介绍Unix和Linux环境下的...通过阅读和实践书中的例子,读者将能够熟练地在Unix/Linux环境下进行高效的系统级编程。

    自定义函数实现linux ls -a -l 命令_ls函数linux_自定义函数实现linux命令_

    在Linux操作系统中,`ls`命令是一个非常基础且常用的工具,用于列出目录中的文件和子目录。`ls -a -l`是`ls`命令的一个组合选项,它提供了丰富的信息展示,包括隐藏文件(以`.`开头的文件)以及每个文件或目录的详细...

    linux&shell课件及例子

    而"LinuxExample"可能是一个包含各种Linux命令和Shell脚本实践的例子集合,用户可以通过运行这些例子来更好地理解和应用所学知识。 总的来说,这个资料包为初学者提供了一个全面了解Linux操作系统和Shell编程的起点...

    linux命令手册,想MSDN一样的东西

    Linux命令手册是Linux系统用户和管理员的重要参考资料,它包含了Linux操作系统中各种命令的详细使用方法、参数选项以及实例解析。这个资源类似于微软开发者的网络(MSDN),为用户提供了一个便捷的方式来查找和理解...

    linux常用命令大全-使用例子

    Linux操作系统以其开源、稳定和强大的命令行工具而受到广大...这只是Linux命令的一小部分,实际上还有许多其他命令和参数,学习使用它们需要不断实践和查阅文档。熟悉这些命令后,你将能更自如地管理和维护Linux系统。

    Linux命令大全(必读).rar

    在"Linux命令大全"这份文档中,每个命令通常会有其基本语法、选项、参数和实际例子。例如,`man`命令提供的是Linux命令的手册页,通过输入`man command_name`可以查看特定命令的详细说明。此外,文件可能还会介绍...

    《Linux命令、编辑器和shell编程(第2版)》源代码

    《Linux命令、编辑器和shell编程(第2版)》是一本深入介绍Linux操作系统中核心概念和技术的书籍,源代码的提供旨在帮助读者更直观地理解书中的理论知识,并通过实践来增强技能。Linux作为开源操作系统,其命令行界面...

    2015Linux命令常用最新

    本文将详细探讨几个在2015年及之后仍然非常实用的Linux命令,包括自动补全、`ps`、`grep`以及`kill`。 首先,让我们来谈谈Linux命令行的自动补全功能。在命令行界面中,当你开始输入命令或路径,只需键入前一两个...

    Linux命令大全搜索工具.zip

    这个压缩包中的"linux-command-master"可能是一个包含各种Linux命令介绍、用法示例和搜索功能的项目。通常,这样的工具会包含命令的解释、参数说明、常见用途以及实用的实战例子。以下是一些关键的Linux命令及其应用...

Global site tag (gtag.js) - Google Analytics