12 Grep命令示例
$ 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表达式!