Merge pull request #37 from LCTT/master

Update Repo
This commit is contained in:
joeren 2015-05-13 14:33:49 +08:00
commit 5dba3258ac

View File

@ -1,23 +1,20 @@
translating by cvsher
Linux grep command with 14 different examples
================================================================================
### Overview : ###
###概述:###
Linux like operating system provides a searching tool known as **grep (global regular expression print)**. grep command is useful for searching the content of one more files based on the pattern. A pattern may be a single character, bunch of characters, single word or a sentence.
所有类linux系统都会提供一个名为**grep(global regular expression print)**的搜索工具。grep命令在基于模式对一个或多个文件内容进行搜索的情况下是非常有用的。一个模式可以是单个字符、多个字符、单个单词、或者是一个句子。
When we execute the grep command with specified pattern, if its is matched, then it will display the line of file containing the pattern without modifying the contents of existing file.
当命令匹配到执行命令时指定的模式时grep会将包含模式的一行输出但是并不对原文件内容进行修改。
In this tutorial we will discuss 14 different examples of grep command
在本文中我们将会讨论到14个grep命令的例子。
### Example:1 Search the pattern (word) in a file ###
###1 在文件中查找模式(单词)###
Search the “linuxtechi” word in the file /etc/passwd file
在/etc/passwd文件中查找单词“linuxtechi”
root@Linux-world:~# grep linuxtechi /etc/passwd
linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash
root@Linux-world:~#
### Example:2 Search the pattern in the multiple files. ###
###2 在多个文件中查找模式。###
root@Linux-world:~# grep linuxtechi /etc/passwd /etc/shadow /etc/gshadow
/etc/passwd:linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash
@ -31,14 +28,14 @@ Search the “linuxtechi” word in the file /etc/passwd file
/etc/gshadow:sambashare:!::linuxtechi
root@Linux-world:~#
### Example:3 List the name of those files which contain a specified pattern using -l option. ###
###3 使用-l参数列出包含指定模式的文件的文件名。###
root@Linux-world:~# grep -l linuxtechi /etc/passwd /etc/shadow /etc/fstab /etc/mtab
/etc/passwd
/etc/shadow
root@Linux-world:~#
### Example:4 Search the pattern in the file along with associated line number(s) using the -n option ###
###4 使用-n参数在文件中查找指定模式及其相关的行号###
root@Linux-world:~# grep -n linuxtechi /etc/passwd
39:linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash
@ -48,34 +45,35 @@ root@Linux-world:~# grep -n root /etc/passwd /etc/shadow
![](http://www.linuxtechi.com/wp-content/uploads/2015/05/grep-n-root.jpg)
### Example:5 Print the line excluding the pattern using -v option ###
###5 使用-v参数输出不包含指定模式的行###
List all the lines of the file /etc/passwd that does not contain specific word “linuxtechi”.
输出/etc/passwd文件中所有不含单词“linuxtechi”的行
root@Linux-world:~# grep -v linuxtechi /etc/passwd
![](http://www.linuxtechi.com/wp-content/uploads/2015/05/grep-v-option.jpg)
### Example:6 Display all the lines that starts with specified pattern using ^ symbol ###
###6 使用^符号输出所有以某指定模式开头的行###
Bash shell treats carrot symbol (^) as a special character which marks the beginning of line or a word. Lets display the lines which starts with “root” word in the file /etc/passwd.
Bash脚本将^符号当作特殊字符处理,用于指定一行或者一个单词的开始。例如输出/etc/passes文件中所有以“root”开头的行
root@Linux-world:~# grep ^root /etc/passwd
root:x:0:0:root:/root:/bin/bash
root@Linux-world:~#
### Example: 7 Display all the lines that ends with specified pattern using $ symbol. ###
###7 使用 $ 符号输出所有以指定模式结尾的行。###
List all the lines of /etc/passwd that ends with “bash” word.
输出/etc/passwd文件中所有以“bash”结尾的行。
root@Linux-world:~# grep bash$ /etc/passwd
root:x:0:0:root:/root:/bin/bash
linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash
root@Linux-world:~#
Bash shell treats dollar ($) symbol as a special character which marks the end of line or word.
Bash脚本将美元($)符号当作特殊字符,用于指定一行或者一个单词的结尾。
###8 使用 -r 参数递归的查找特定模式###
### Example:8 Search the pattern recursively using -r option ###
root@Linux-world:~# grep -r linuxtechi /etc/
/etc/subuid:linuxtechi:100000:65536
@ -91,37 +89,37 @@ Bash shell treats dollar ($) symbol as a special character which marks the end o
/etc/passwd:linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash
............................................................................
Above command will search linuxtechi in the “/etc” directory recursively.
上面的命令将会递归的在/etc目录中查找“linuxtechi”单词
### Example:9 Search all the empty or blank lines of a file using grep ###
###9 使用grep查找文件中所有的空行
root@Linux-world:~# grep ^$ /etc/shadow
root@Linux-world:~#
As there is no empty line in /etc/shadow file , so nothing is displayed.
由于/etc/shadow文件中没有空行所以没有任何输出
### Example:10 Search the pattern using grep -i option. ###
###10 使用“grep -i”参数查找模式###
-i option in the grep command ignores the letter case i.e it will ignore upper case or lower case letters while searching
grep命令的-i参数在查找时忽略字符的大小写。
Lets take an example , i want to search “LinuxTechi” word in the passwd file.
我们来看一个例子在paswd文件中查找“LinuxTechi”单词。
nextstep4it@localhost:~$ grep -i LinuxTechi /etc/passwd
linuxtechi:x:1001:1001::/home/linuxtechi:/bin/bash
nextstep4it@localhost:~$
### Example:11 Search multiple patterns using -e option ###
###11 使用-e参数查找多个模式###
For example i want to search linuxtechi and root word in a single grep command , then using -e option we can search multiple patterns .
例如我想在一条grep命令中查找linuxtechiroot单词使用-e参数我们可以查找多个模式。
root@Linux-world:~# grep -e "linuxtechi" -e "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash
root@Linux-world:~#
### Example:12 Getting Search pattern from a file using “grep -f” ###
###12 使用“grep -f”从一个文件中获取待查找的模式###
First create a search pattern file “grep_pattern” in your current working directory. In my case i have put the below contents.
首先在当前目录中创建一个搜索模式文件“grep_pattern”我想文件中输入的如下内容。
root@Linux-world:~# cat grep_pattern
^linuxtechi
@ -129,35 +127,35 @@ First create a search pattern file “grep_pattern” in your current working di
false$
root@Linux-world:~#
Now try to search using grep_pattern file.
现在试试使用grep_pattern文件进行搜索
root@Linux-world:~# grep -f grep_pattern /etc/passwd
![](http://www.linuxtechi.com/wp-content/uploads/2015/05/grep-f-option.jpg)
### Example:13 Count the number of matching patterns using -c option ###
###13 使用-c参数计算模式匹配的数量###
Let take the above example , we can count the number of matching patterns using -c option in grep command.
继续上面例子我们在grep命令中使用-c命令计算匹配指定模式的数量
root@Linux-world:~# grep -c -f grep_pattern /etc/passwd
22
root@Linux-world:~#
### Example:14 Display N number of lines before & after pattern matching ###
###14 输出匹配指定模式行的前或者后面N行###
a) Display Four lines before patten matching using -B option
a)使用-B参数输出匹配行的前4行
root@Linux-world:~# grep -B 4 "games" /etc/passwd
![](http://www.linuxtechi.com/wp-content/uploads/2015/05/grep-B-option.jpg)
b) Display Four lines after pattern matching using -A option
b)使用-A参数输出匹配行的后4行
root@Linux-world:~# grep -A 4 "games" /etc/passwd
![](http://www.linuxtechi.com/wp-content/uploads/2015/05/grep-A-option.jpg)
c) Display Four lines around the pattern matching using -C option
c)使用-C参数输出匹配行的前后各4行
root@Linux-world:~# grep -C 4 "games" /etc/passwd
@ -168,7 +166,7 @@ c) Display Four lines around the pattern matching using -C option
via: http://www.linuxtechi.com/linux-grep-command-with-14-different-examples/
作者:[Pradeep Kumar][a]
译者:[译者ID](https://github.com/译者ID)
译者:[cvsher](https://github.com/cvsher)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](https://linux.cn/) 荣誉推出