Linux grep命令的12个实用示例

grep是一个最强大的文件模式搜索器,配备在每个Linux发行版。在本文中,我将介绍一些有用的12个grep命令。

你曾经遇到过在文件中查找特定字符串或模式的任务,但是不知道从哪里开始查找?那么,这里是grep来救援!
Grep命令示例

12 Grep命令示例

grep 是配备在Linux上的每一个分布的功能强大的文件搜索模式。 如果出于某种原因,这是不是你的系统上安装,你可以很容易地通过它你的包管理器进行安装(在Debian / Ubuntu的 apt-getYumRHEL / CentOS的 / Fedora的 )。
$ sudo apt-get install grep         #Debian/Ubuntu
$ sudo yum install grep             #RHEL/CentOS/Fedora
我发现,让你的脚湿使用grep 最简单方法是在短短的潜水权,并使用一些真实的例子。

1.搜索和查找文件

比方说,您刚刚安装新的Ubuntu的新副本你的机器上,那你要给Python脚本的一个镜头。 你一直在网上淘找教程,但你看到有使用两个不同版本的Python,而你不知道哪一个是由Ubuntu的安装程序安装到系统上,或者如果它安装的模块。只需运行此命令:
# dpkg –l | grep –i python
示例输出
ii  python2.7                        2.7.3-0ubuntu3.4                    Interactive high-level object-oriented language (version 2.7)
ii  python2.7-minimal                2.7.3-0ubuntu3.4                    Minimal subset of the Python language (version 2.7)
ii  python-openssl                   0.12-1ubuntu2.1                     Python wrapper around the OpenSSL library
ii  python-pam                       0.4.2-12.2ubuntu4                   A Python interface to the PAM library
首先,我们跑的dpkg -l,其中列出了在系统上安装* .deb软件包。 第二,我们的管道输出到grep -ipython,它简单状态“去grep和过滤掉,并返回在它的Python的一切。”-i选项有忽略大小写,以及grep是区分大小写。 使用-i选项进入,除非你当然想明确更具体的搜索的好习惯。

2.搜索和过滤文件

grep 也可以用来搜索和单个文件或多个文件中进行筛选。让我们来看这个场景: 您遇到一些麻烦你的Apache Web服务器 ,并且您已经接触了在网络上寻求一些帮助许多真棒论坛之一。 那种灵魂谁回复你要求你发布你的/ etc / apache2的/网站的可用/默认SSL文件的内容。你会不会更容易,那个帮助你的家伙,以及每个人阅读它,如果你可以删除所有的注释行?你可以!只需运行:
# grep –v “#”  /etc/apache2/sites-available/default-ssl
-v选项告诉grep来反转它的输出,这意味着,而不是打印匹配行,却反其道而行之,并打印所有不匹配的表达,在这种情况下的线条时,#注释行。

3.仅查找所有.mp3文件

grep 可以是用于从标准输出滤波非常有用的。 例如,假设您有一个完整的文件夹充满了一堆不同格式的音乐文件。 你想找到所有从艺术家JayZ* .mp3文件,但你不希望任何的混音曲目。 使用find命令与一对夫妇的grep管道将这样的伎俩:
# find . –name “*.mp3” | grep –i JayZ | grep –vi “remix”
在这个例子中,我们使用的是发现打印的所有文件以* .MP3扩展 ,管道就到grep -i筛选出并打印名为“JayZ”,然后另一条管道的所有文件,这些文件过滤到grep -VI出,并且不与串(在任何情况下)“ 混音 ”打印所有的文件名。

建议阅读: Linux的35个实际的例子查找命令

4.显示搜索字符串之前或之后的行数

选项另一对夫妇是-A-B开关,显示线的匹配线和数目,要么来之前或搜索字符串之后。 虽然手册页提供了更详细的解释,我觉得最容易记住的选项-A = ,和-B 之前 =:
# ifconfig | grep –A 4 eth0
# ifconfig | grep  -B 2 UP

5.打印匹配周围的线数

grep 的-c选项相似,但不是打印的前或后的字符串来的线条,它打印在任一方向的线路:
# ifconfig | grep –C 2 lo

6.计数匹配数

类似管道grep命令字符串字数(WC程序)的grep 内置选项可以执行同样的话:
# ifconfig | grep –c inet6

7.按给定字符串搜索文件

在编译错误调试文件时grep -n选项是非常有用的。它在给定搜索字符串的文件中显示行号:
# grep –n “main” setup..py

8.在所有目录中递归搜索字符串

如果您想寻找与所有子目录沿当前目录的字符串,可以指定-r选项递归搜索:
# grep –r “function” *

9.搜索整个花样

通过-w选项对grep是字符串中的整个模式的搜索。例如,使用:
# ifconfig | grep –w “RUNNING”
将在引号中打印包含模式的行。另一方面,如果你尝试:
# ifconfig | grep –w “RUN”
不会返回任何内容,因为我们不是搜索模式,而是整个单词。

10.在Gzipped文件中搜索字符串

值得一提的是grep 派生。首先是zgrep,其中,类似ZCAT,压缩文件上调用使用。 它采用相同的选项grep和以同样的方式使用:
# zgrep –i error /var/log/syslog.2.gz

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

egrep 是另一种衍生的意思是“ 扩展全局正则表达式 ”。 它可以识别更多的表达元字符这种+? |()。

推荐阅读: 什么是grep 差异,EGREP和fgrep一样在Linux之间?

egrep对于搜索源文件和其他代码段非常有用,如果需要的话。它可以从普通的grep通过指定-E选项调用。
# grep –E

12.搜索固定模式字符串

比fgrep搜索一个或多个文件的列表的固定模式串。 它是一样的grep -F。 使用fgrep一样的一个常用方法是模式的文件传递给它:
# fgrep –f file_full_of_patterns.txt file_to_search.txt
这仅仅是一个起点使用grep,但你可能能够看到,它是无价的多种用途。 除了我们已经实现了简单的行命令中,grep可以用来编写功能强大的cron作业,和强大的shell脚本 ,对于一个开始。

建议阅读: 11'grep'可以在字符类和括号表达式命令

要有创意,实验手册页的选项,并拿出服务于自己的目的grep表达式