博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[ Linux 命令 ] grep
阅读量:4914 次
发布时间:2019-06-11

本文共 2342 字,大约阅读时间需要 7 分钟。

一、grep是什么?

  Linux grep命令是用于查找文件里符合条件行的shell命令。

 

二、为什么要使用grep?

  在查找文件内容时候,通过使用grep指定条件,可以快速定位到文件里字符串所在的行,提高效率。

 

三、grep的基本用法

grep命令有三个:grep,egrep,fgrep

grep:根据模式,搜索文本,并将复合模式的问本行显示出来。

 

    -i: 忽视大小写

    --color: 高亮色显示匹配内容
    -v: 反向查找,没有被模式匹配到的行
    -o: 只显示被模式匹配到的字符串
    -A: 显示匹配到的行下面N行

    -B: 显示匹配到的行上面N行

    -C: 显示匹配到的行上下行

 

正则表达式:

*: 匹配其前面的字符任意次

[root@node1 ~]# cat test abaabacbadbanmbnmbnmbnmnbbbsdfb[root@node1 ~]# egrep 'a*b' test   # 其面前字符的任意长度例如:b ab aab aaaababaabacbadbanmbnmbnmbnmnbbbsdfb

?: 匹配其前面的字符1次或0次

[root@node1 ~]# egrep 'a?b' test    # 匹配其前面的字符1次或者0次,如:ab b abaabacbadbanmbnmbnmbnmnbbbsdfb

.: 匹配任意单个字符

[root@node1 ~]# egrep 'r..t' /etc/passwd   # 匹配如:root rabt r/ftroot:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologinftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

[-]: 匹配指定范围的任意单个字符

[root@node1 ~]# netstat -ntplu | egrep '4[0-9]00'tcp        0      0 10.0.0.10:4000              0.0.0.0:*                   LISTEN      2137/httpd          tcp        0      0 10.0.0.10:4100              0.0.0.0:*                   LISTEN      2137/httpd          tcp        0      0 10.0.0.10:4200              0.0.0.0:*                   LISTEN      2137/httpd          tcp        0      0 10.0.0.10:4300              0.0.0.0:*                   LISTEN      2137/httpd

[^-]: 匹配指定范围的任意单个字符

[root@node1 ~]# netstat -ntplu | egrep '4[^1-3]00'tcp        0      0 10.0.0.10:4000              0.0.0.0:*                   LISTEN      2137/httpd

{}: 匹配其前面字符的多少次

[root@node1 ~]# egrep 'a{1,2}b' test  # 匹配内容 ab, aab abaab

 

 

位置锚定:

^: 锚定行首,此字符后面的任意内容必须出现在行首

[root@node1 ~]# egrep '^root' /etc/passwdroot:x:0:0:root:/root:/bin/bash

$: 锚定行尾,此字符后面的任意内容必须出现在行尾

[root@node1 ~]# egrep 'shutdown$' /etc/passwd   # 匹配以shutdown结尾的行shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

^$: 空白行

[root@node1 ~]# cat abc.txt abc[root@node1 ~]# egrep '^$' abc.txt [root@node1 ~]# egrep '^$' abc.txt | wc -l    # 可以统计出来有两行是空格行2

\<或\b: 其后面的任意字符必须作为单词首部出现

[root@node1 ~]# cat test.txt This is root.The user is mroot.rooter is a dog's name.mrooter is not a word.[root@node1 ~]# egrep 'root\>' test.txt    # 匹配词尾的This is root.The user is mroot.

\>或\b: 其前面的任意字符必须作为单词尾部出现

[root@node1 ~]# cat test.txt   # 记住这里的词首不是行首。因此 This is root. 是没问题的This is root.The user is mroot.rooter is a dog's name.mrooter is not a word.[root@node1 ~]# egrep '\

转载于:https://www.cnblogs.com/hukey/p/5835930.html

你可能感兴趣的文章
【数据分析 R语言实战】学习笔记 第六章 参数估计与R实现(下)
查看>>
单点登录SSO的实现原理
查看>>
2018-2019 ACM-ICPC Brazil Subregional Programming Contest B. Marbles(博弈)
查看>>
在Azure DevOps Server(TFS系统)中部署回退/回滚方案(Rollback)
查看>>
JSP和JavaBean
查看>>
在同一个类中的普通成员函数中调用static 成员变量,linker出错,无法解析的外部命令?...
查看>>
安卓MP3播放器开发实例(1)之音乐列表界面
查看>>
PHP 闭包函数 function use 使用方法实例
查看>>
系统级性能分析工具 — Perf
查看>>
Hbase在的应用经验的统计
查看>>
leetcode - Rotate Image
查看>>
Pki原则
查看>>
【Linux】linux经常使用基本命令
查看>>
开源GUI-Microwindows之程序入口分析
查看>>
C++Vector使用方法
查看>>
Qt多线程学习:创建多线程
查看>>
简单实现input输入框的下拉显示
查看>>
淘宝收藏
查看>>
Display Custom Hints for TListView Sub Items
查看>>
DUBBO Thread pool is EXHAUSTED!
查看>>