15个Linux Grep命令使用实例
15个Linux Grep命令使用实例
本文讲解了如从单个文件中查找指定的字符串、从多个文件中查找指定的字符串、在文件中匹配正则表达式、显示匹配后N行等内容,接下来是小编为大家收集的15个Linux Grep命令使用实例,希望能帮到大家。
15个Linux Grep命令使用实例
学习啦在线学习网 Grep命令主要用于从文件中查找指定的字符串。
学习啦在线学习网 首先建一个demo_file:
复制代码
代码如下:
学习啦在线学习网 $ cat demo_file
学习啦在线学习网 THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
学习啦在线学习网 this line is the 1st lower case line in this file.
This Line Has All Its First Character Of The Word With Upper Case.
Two lines above this line is empty.
And this is the last line.
例01:从单个文件中查找指定的字符串
复制代码
代码如下:
$ grep "this" demo_file
学习啦在线学习网 this line is the 1st lower case line in this file.
Two lines above this line is empty.
例02:从多个文件中查找指定的字符串
复制代码
代码如下:
学习啦在线学习网 $ cp demo_file demo_file1
学习啦在线学习网 $ grep "this" demo_*
demo_file:this line is the 1st lower case line in this file.
demo_file:Two lines above this line is empty.
demo_file:And this is the last line.
demo_file1:this line is the 1st lower case line in this file.
demo_file1:Two lines above this line is empty.
demo_file1:And this is the last line.
例03:忽略大小写使用 grep -i
复制代码
代码如下:
学习啦在线学习网 $ grep -i "the" demo_file
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
This Line Has All Its First Character Of The Word With Upper Case.
学习啦在线学习网 And this is the last line.
例04:在文件中匹配正则表达式
如果你能在实际使用正则表达式,能使效率大大提高。在下面的例子中,匹配了所有以lines开头,以empty结尾的行。
复制代码
代码如下:
学习啦在线学习网 $ grep "lines.*empty" demo_file
学习啦在线学习网 Two lines above this line is empty.
从Grep文档的来看,一个正则表达式必须遵循下面的匹配操作。
学习啦在线学习网 1.? The preceding item is optional and matched at most once.
2.* The preceding item will be matched zero or more times.
3.+ The preceding item will be matched one or more times.
4.{n} The preceding item is matched exactly n times.
学习啦在线学习网 5.{n,} The preceding item is matched n or more times.
6.{,m} The preceding item is matched at most m times.
学习啦在线学习网 7.{n,m} The preceding item is matched at least n times, but not more than m times.
例05:用grep -w来查找全匹配,不包括子字符串
学习啦在线学习网 比如说:用下面的例子搜索出来的例子包括"is","his"
复制代码
代码如下:
学习啦在线学习网 $ grep -i "is" demo_file
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
This Line Has All Its First Character Of The Word With Upper Case.
学习啦在线学习网 Two lines above this line is empty.
学习啦在线学习网 And this is the last line.
学习啦在线学习网 而用grep -iw搜索出来的结果如下: 注意,忽略大小。"IS","is"
复制代码
代码如下:
学习啦在线学习网 $ grep -iw "is" demo_file
学习啦在线学习网 THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
学习啦在线学习网 this line is the 1st lower case line in this file.
Two lines above this line is empty.
学习啦在线学习网 And this is the last line.
学习啦在线学习网 例06:用grep -A,-B,-C 来查看after/before/around 行
学习啦在线学习网 当在一个大的文件中执行grep操作时,如果想要看其中一些行,并且想看之前,之后的或某些行附近的,那么这里命令就起作用了。grep -A,-B,-C.先建个demo.txt作为模板
复制代码
代码如下:
$ cat demo_text
4. Vim Word Navigation
You may want to do several navigation in relation to the words, such as:
学习啦在线学习网 * e - go to the end of the current word.
学习啦在线学习网 * E - go to the end of the current WORD.
学习啦在线学习网 * b - go to the previous (before) word.
学习啦在线学习网 * B - go to the previous (before) WORD.
* w - go to the next word.
* W - go to the next WORD.
WORD - WORD consists of a sequence of non-blank characters, separated with white space.
word - word consists of a sequence of letters, digits and underscores.
Example to show the difference between WORD and word
* 192.168.1.1 - single WORD
学习啦在线学习网 * 192.168.1.1 - seven words.
6.1 显示匹配后N行
复制代码
代码如下:
$ grep -A 3 -i "example" demo_text
学习啦在线学习网 Example to show the difference between WORD and word
* 192.168.1.1 - single WORD
* 192.168.1.1 - seven words.
6.2 显示匹配前N行
复制代码
代码如下:
$ grep -B 2 "single WORD" demo_text
Example to show the difference between WORD and word
* 192.168.1.1 - single WORD
学习啦在线学习网 6.3 显示匹配前N行
复制代码
代码如下:
$ grep -C 2 "Example" demo_text
word - word consists of a sequence of letters, digits and underscores.
Example to show the difference between WORD and word
* 192.168.1.1 - single WORD
例07:用GREP_OPTIONS来让查找的项醒目
如果你想使匹配的好看且醒目,可以使用下面的操作:
复制代码
代码如下:
学习啦在线学习网 $ export GREP_OPTIONS='--color=auto' GREP_COLOR='100;8'
$ grep this demo_file
this line is the 1st lower case line in this file.
Two lines above this line is empty.
学习啦在线学习网 And this is the last line.
例08:用grep -r来搜索所有的文件及子目录
复制代码
代码如下:
$ grep -r "ramesh" *
学习啦在线学习网 例09:用grep -v来显示不匹配的项
复制代码
代码如下:
$ grep -v "go" demo_text
学习啦在线学习网 4. Vim Word Navigation
学习啦在线学习网 You may want to do several navigation in relation to the words, such as:
WORD - WORD consists of a sequence of non-blank characters, separated with white space.
word - word consists of a sequence of letters, digits and underscores.
Example to show the difference between WORD and word
* 192.168.1.1 - single WORD
学习啦在线学习网 * 192.168.1.1 - seven words.
例10:显示所有不匹配的项
复制代码
代码如下:
$ cat test-file.txt
a
b
c
d
$ grep -v -e "a" -e "b" -e "c" test-file.txt
d
例11:用grep -c 来计算匹配的数量
11.1计算匹配的字符串数
复制代码
代码如下:
$ grep -c "go" demo_text
6
学习啦在线学习网 11.2计算匹配的模式数
复制代码
代码如下:
$ grep -c this demo_file
3
11.3计算不匹配的模式数
复制代码
代码如下:
学习啦在线学习网 $ grep -v -c this demo_file
4
例12:使用grep -l显示匹配的文件名
复制代码
代码如下:
学习啦在线学习网 $ grep -l this demo_*
学习啦在线学习网 demo_file
学习啦在线学习网 demo_file1
学习啦在线学习网 例13:只显示匹配的字符串
复制代码
代码如下:
$ grep -o "is.*line" demo_file
学习啦在线学习网 is line is the 1st lower case line
is line
学习啦在线学习网 is is the last line
例14:
复制代码
代码如下:
学习啦在线学习网 $ cat temp-file.txt1234512345
学习啦在线学习网 $ grep -o -b "3" temp-file.txt
2:3
8:3
注意:上述的不是该字符所在行中的位置,而是字节的位置。
例15:用grep -n 显示行数
复制代码
代码如下:
$ grep -n "go" demo_text
5: * e - go to the end of the current word.
学习啦在线学习网 6: * E - go to the end of the current WORD.
7: * b - go to the previous (before) word.
学习啦在线学习网 8: * B - go to the previous (before) WORD.
9: * w - go to the next word.
10: * W - go to the next WORD.
看了“15个Linux Grep命令使用实例”还想看: