via: http://www.tecmint.com/12-practical-examples-of-linux-grep-command/
grep is a powerful file pattern searcher that comes equipped on every distribution of Linux. If, for whatever reason, it is not installed on your system, you can easily install it via your package manager (apt-get on Debian/Ubuntu and yum on RHEL/CentOS/Fedora).
$ sudo apt-get install grep #Debian/Ubuntu
$ sudo yum install grep #RHEL/CentOS/Fedora
I have found that the easiest way to get your feet wet with grep is to just dive right in and use some real world examples.
1. Search and Find Files
Let’s say that you have just installed a fresh copy of the new Ubuntu on your machine, and that you are going to give Python scripting a shot. You have been scouring the web looking for tutorials, but you see that there are two different versions of Python in use, and you don’t know which one was installed on your system by the Ubuntu installer, or if it installed any modules. Simply run this command:
# dpkg –l | grep –i python
Sample Output
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
First, we ran dpkg –l, which lists installed *.deb packages on your system. Second, we piped that output to grep –i python, which simple states “go to grep and filter out and return everything with ‘python’ in it.” The –i option is there to ignore-case, as grep is case-sensitive. Using the –ioption is a good habit of getting into, unless of course you are trying to nail down a more specific search.
2. Search and Filter Files
The grep can also be used to search and filter within individual files or multiple files. Lets take this scenario:
You are having some trouble with your Apache Web Server, and you have reached out to one of the many awesome forums on the net asking for some help. The kind soul who replies to you has asked you to post the contents of your /etc/apache2/sites-available/default-ssl file. Wouldn’t it be easier for you, the guy helping you, and everyone reading it, if you could remove all of the commented lines? Well you can! Just run this:
# grep –v “#” /etc/apache2/sites-available/default-ssl
The –v option tells grep to invert its output, meaning that instead of printing matching lines, do the opposite and print all of the lines that don’t match the expression, in this case, the #commented lines.
3. Find all .mp3 Files Only
The grep can be very useful for filtering from stdout. For example, let’s say that you have an entire folder full of music files in a bunch of different formats. You want to find all of the *.mp3files from the artist JayZ, but you don’t want any of the remixed tracks. Using a find commandwith a couple of grep pipes will do the trick:
# find . –name “*.mp3” | grep –i JayZ | grep –vi “remix”
In this example, we are using find to print all of the files with a *.mp3 extension, piping it to grep –i to filter out and prints all files with the name “JayZ” and then another pipe to grep –vi which filters out and does not print all filenames with the string (in any case) “remix”.
4. Display Number of Lines Before or After Search String
Another couple of options are the –A and –B switches, which displays the matched line and number of lines either that come before or after the search string. While the man page gives a more detailed explanation, I find it easiest to remember the options as –A = after, and –B =before:
# ifconfig | grep –A 4 eth0 # ifconfig | grep -B 2 UP
5. Prints Number of Lines Around Match
The grep’s –C option is similar, but instead of printing the lines that come either before or after the string, it prints the lines in either direction:
# ifconfig | grep –C 2 lo
6. Count Number of Matches
Similar to piping a grep string to word count (wc program) grep’s built-in option can perform the same for you:
# ifconfig | grep –c inet6
7. Search Files by Given String
The –n option for grep is very useful when debugging files during compile errors. It displays the line number in the file of the given search string:
# grep –n “main” setup..py
8. Search a string Recursively in all Directories
If you would like to search for a string in the current directory along with all of the subdirectories, you can specify the –r option to search recursively:
# grep –r “function” *
9. Searches for the entire pattern
Passing the –w option to grep searches for the entire pattern that is in the string. For example, using:
# ifconfig | grep –w “RUNNING”
Will print out the line containing the pattern in quotes. On the other hand, if you try:
# ifconfig | grep –w “RUN”
Nothing will be returned as we are not searching for a pattern, but an entire word.
10. Search a string in Gzipped Files
Deserving some mention are grep’s derivatives. The first is zgrep, which, similar to zcat, is for use on gzipped files. It takes the same options as grep and is used in the same way:
# zgrep –i error /var/log/syslog.2.gz
11. Match Regular Expression in Files
The egrep is another derivative that stands for “Extended Global Regular Expression”. It recognizes additional expression meta-characters such at + ? | and (). egrep is very useful for searching source files, and other pieces of code, should the need arise. It can be invoked from regular grep by specifying the –E option.
# grep –E
12. Search a Fixed Pattern String
The fgrep searches a file or list of files for a fixed pattern string. It is the same as grep –F. A common way of using fgrep is to pass a file of patterns to it:
# fgrep –f file_full_of_patterns.txt file_to_search.txt
This is just a starting point with grep, but as you are probably able to see, it is invaluable for a variety of purposes. Aside from the simple one line commands we have implemented, grep can be used to write powerful cron jobs, and robust shell scripts, for a start. Be creative, experiment with the options in the man page, and come up with grep expressions that serve your own purposes!
相关推荐
标题中的"adc.rar_S3C2440 ADC_adc linux_linux adc examples_linux adc_s3c2"表明这是一个关于S3C2440处理器在Linux操作系统下使用ADC(模拟数字转换器)的资源集合,可能包含驱动程序代码、示例应用以及相关的文档...
a_collection_of_knitr_examples_knitr-examples
A_minimal_R_package_with_examples_of_most_common_c_rmini
将ippicv_linux_20151201.tgz替换opencv-3.1.0/3rdparty/ippicv/downloads/linux-*目录下的同名文件 cp protobuf-cpp-3.1.0.tar.gz /home/zhuzhao/opencv/opencv_contrib/modules/dnn/.download/bd5e3eed635a8d32e2b...
标题中的"PyPI 官网下载 | dexy_filter_examples-0.0.3.tar.gz"表明这是一个在Python Package Index (PyPI)上发布的开源软件包,名为`dexy_filter_examples`,版本为0.0.3,其打包格式是tar.gz。PyPI是Python开发者...
英飞凌AURIX系列code example,实用,同类都需要40-50币吧
英飞凌DOMO,适用与TC277和TC397开发板。 英飞凌DOMO,适用与TC277和TC397开发板。 英飞凌DOMO,适用与TC277和TC397开发板。 英飞凌DOMO,适用与TC277和TC397开发板。
在标题“DirectFB-1.4.9.tar.gz_DirectFB-examples_directfb_linux fb”中,我们可以看到DirectFB的版本号是1.4.9,表明这是一个软件的源代码包,格式为tar.gz,通常用于在Linux环境中解压和编译。"DirectFB-...
java编程开发经典实例代码集合java programming development of the classic examples of code sets
《专业Linux编程实战指南》是针对Linux操作系统进行深入编程的一份宝贵资料,涵盖了广泛的Linux编程技术,旨在帮助开发者提升在Linux环境下的编程能力。本文将根据提供的资源,深入解析Linux编程的重要概念、技术和...
NVIDIA_Jetson_amd_Deepstream_Python_Examples_deepstream-examples
Python_网络数据采集示例__All_Examples_for_a_book_called__PythonScrapingLearning
MSP-EXP430F5529LP Software Examples v1.05.00 Texas Instruments, Inc. ******************************************************************************** Welcome to the MSP-EXP430F5529LP LaunchPad! ****...
Linux系统中添加用户是一项基础且重要的管理任务,尤其是通过命令行界面(CLI)来完成。Linux中的`useradd`命令是一个低级别的实用工具,用于在Linux及其他类Unix操作系统中添加或创建用户账户。实际上,`adduser`...
Learn_OpenCV___C++_and_Python_Examples_learnopencv
FLEX 基础教程代码实例,比较初级好用的代码,很适合初学者
"qt serial example"和"qt serial examples"标签暗示了这个压缩包可能包含了多个串口通信的例子。例如,一个基本的串口通信示例可能会包含以下步骤: 1. 创建QSerialPort对象,并指定要打开的串口名,如"/dev/...
ros2_planning_system_examples
在这个“understand_linux_process_examples”项目中,我们将深入探讨Linux进程的相关概念,以及如何利用Go语言进行相关操作。 首先,让我们了解几个基本的Linux进程概念: 1. **进程ID (PID)**:每个进程都有一个...
p13390677_112040_Linux-x86-64_1of7.zip p13390677_112040_Linux-x86-64_2of7.zip p13390677_112040_Linux-x86-64_3of7.zip p13390677_112040_Linux-x86-64_4of7.zip p13390677_112040_Linux-x86-64_5of7.zip p...