服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - 15个Linux Grep命令使用实例(实用、常用)

15个Linux Grep命令使用实例(实用、常用)

2019-09-29 15:35Linux教程网 Linux

这篇文章主要介绍了15个Linux Grep命令使用实例(实用、常用),本文讲解了如从单个文件中查找指定的字符串、从多个文件中查找指定的字符串、在文件中匹配正则表达式、显示匹配后N行等内容,需要的朋友可以参考下

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 





$ grep -v -e "a" -e "b" -e "c" test-file.txt 

 

例11:用grep -c 来计算匹配的数量

11.1计算匹配的字符串数
 

复制代码

代码如下:


$ grep -c "go" demo_text 


11.2计算匹配的模式数

复制代码

代码如下:


$ grep -c this demo_file 


11.3计算不匹配的模式数

复制代码

代码如下:


$ grep -v -c this demo_file 

 

例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. 

延伸 · 阅读

精彩推荐
  • LinuxLinux中环境变量配置的步骤详解

    Linux中环境变量配置的步骤详解

    Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的...

    Myths7882022-02-10
  • Linuxlinux中rmdir命令使用详解(删除空目录)

    linux中rmdir命令使用详解(删除空目录)

    今天学习一下linux中命令: rmdir命令。rmdir是常用的命令,该命令的功能是删除空目录,一个目录被删除之前必须是空的 ...

    linux命令大全5372019-11-19
  • LinuxLinux上设置用户通过SFTP访问目录的权限的方法

    Linux上设置用户通过SFTP访问目录的权限的方法

    这篇文章主要介绍了Linux上设置用户通过SFTP访问目录的权限的方法,SFTP可以理解为使用SSH协议进行FTP传输的协议,因而同时要对OpenSSH进行相关设置,需要的朋...

    OSChina10022019-06-19
  • Linux手把手教您在 Linux 上使用 GPG 加解密文件

    手把手教您在 Linux 上使用 GPG 加解密文件

    在本教程中,我将告诉你如何用 GPG 加密和解密文件。这是一个简单的教程,你可以在你的 Linux 系统上尝试所有的练习。这将帮助你练习 GPG 命令,并在你...

    Linux中国6962021-12-15
  • Linux确保Linux系统安全的前提条件 漏洞防护

    确保Linux系统安全的前提条件 漏洞防护

    Linux 作为开放式的操作系统受到很多程序员的喜爱,很多高级程序员都喜欢编写Linux操作系统的相关软件。这使得Linux操作系统有着丰富的软件支持,还有无...

    Linux之家2642020-04-11
  • LinuxLinux lnmp下无法使用mail发邮件的两种解决方法

    Linux lnmp下无法使用mail发邮件的两种解决方法

    在配置了lnmp环境后,出现了mail函数不能发送邮件的问题,其实有两种方法,一是使用sendmail组件,而是使用postfix。下面为大家一一介绍下 ...

    Linux之家4042019-09-17
  • Linux详解Linux系统下PXE服务器的部署过程

    详解Linux系统下PXE服务器的部署过程

    这篇文章主要介绍了Linux系统下PXE服务器的部署过程,包括对PXE的API架构作了一个基本的简介,需要的朋友可以参考下...

    运维之道9812019-07-04
  • LinuxLinux常用的日志文件和常用命令

    Linux常用的日志文件和常用命令

    成功地管理任何系统的关键之一,是要知道系统中正在发生什么事。 Linux 中提供了异常日志,并且日志的细节是可配置的。Linux 日志都以明文形式存储,所...

    Linux教程网2632020-04-18