grep简介

grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。通常grep有三种版本grep、egrep(等同于grep -E)和fgrep。egrep为扩展的grep,fgrep则为快速grep(固定的字符串来对文本进行搜索,不支持正则表达式的引用但是查询极为快速)。grep是Linux文本处理三剑客之一。

grep使用方式

使用方式:

grep [OPTIONS] PATTERN [FILE...]

grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

常用选项:

--color=auto:对匹配到的文本着色后进行高亮显示;

-i:忽略字符的大小写

-o:仅显示匹配到的字符串

-v:显示不能被模式匹配到的行

-E:支持使用扩展的正则表达式

-q:静默模式,即不输出任何信息

-A #:显示被模式匹配的行及其后#行

-B #:显示被模式匹配的行及其前#行

-C #:显示被模式匹配的行及其前后各#行

注:使用grep匹配时需使用双引号引起来(单引号为强引用),防止被系统误认为参数或者特殊命令而报错。

扩展grep使用方式

使用方式:

egrep [OPTIONS] PATTERN [FILE...]

grep -E [OPTIONS] PATTERN [FILE...]

-i:忽略字符的大小写

-o:仅显示匹配到的字符串本身

-v:显示不被模式匹配到的行

-q:静默模式,即不输出任何信息

-A #:显示被模式匹配的行及其后#行

-B #:显示被模式匹配的行及其前#行

-C #:显示被模式匹配的行及其前后各#行

-G:支持基本正则表达式

grep正则表达式元字符

‘^‘: 锚定行首

‘$': 锚定行尾

‘.‘: 匹配任一一个字符

‘*': 匹配零个或多个先前字符

‘\?‘:匹配其前面的字符0次或者1次;

‘\+':匹配其前面的字符1次或者多次;

‘\{m\}‘:匹配其前面的字符m次(\为转义字符)

‘\{m,n\}':匹配其前面的字符至少m次,至多n次

‘[]‘: 匹配一个指定范围内的字符 | ‘[^]'匹配指定范围外的任意单个字符

‘\'或‘\b':锚定词尾(可用\:匹配完整单词)

‘\(\)':将多个字符当做一个整体进行处理

后向引用:引用前面的分组括号中的模式所匹配到的字符

分组括号中的模式匹配到的内容或被正则表达式引擎自动记录于内部的变量中:

\1:模式从左侧起,第一个左括号及与之匹配的右括号之间模式匹配到的内容

\2:模式从左侧起,第二个左括号及与之匹配的右括号之间模式匹配到的内容...

扩展正则表达式与正则表达式略有不同:

'[]':依旧匹配指定范围内的任意单个字符;但是有很多特殊匹配方式。

[:digit:] 匹配任意单个数字

[:lower:] 匹配任意单个小写字母

[:upper:] 匹配任意单个大写字母

[:alpha:] 匹配任意单个字母

[:alnum:] 匹配任意单个字母或数字

[:punct:] 匹配任意单个符号

[:space:] 匹配单个空格

一些地方取消了转义字符的使用:

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

‘+':匹配其前面的字符1次或者多次;

‘{m}‘:匹配其前面的字符m次(\为转义字符)

‘{m,n}':匹配其前面的字符至少m次,至多n次

():将一个或多个字符捆绑在一起,当做一个整体进行处理,反向引用照常使用。

‘|':或(注:‘C|cat'为C与cat,‘(C|c)at才是Cat与cat')

练习题:

1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次

[root@localhost ~]# who | cut -d' ' -f1|uniq

root

2、取出最后登录到当前系统的用户的相关信息

[root@localhost ~]# id `last | head -1 | cut -d' ' -f1`

uid=0(root) gid=0(root) groups=0(root)

3.取出当前系统上被用户当做其默认shell最多的那个shell

[root@localhost ~]# cut -d':' -f7 /etc/passwd|uniq -c|sort -n|tail -1|cut -d' ' -f7

/sbin/nologin

4.将/etc/passd中的第三个字段设置最大的后10个用户的信息全部改为大写保存至/tmp/maxuser.txt文件中

[root@localhost ~]# sort -t':' -k3 -n /etc/passwd|tail -10|tr 'a-z' 'A-Z' >/tmp/maxusers.txt

[root@localhost ~]# cat /tmp/maxusers.txt

NOBODY:X:99:99:NOBODY:/:/SBIN/NOLOGIN

SYSTEMD-NETWORK:X:192:192:SYSTEMD NETWORK MANAGEMENT:/:/SBIN/NOLOGIN

Nginx:X:996:994:Nginx WEB SERVER:/VAR/LIB/Nginx:/SBIN/NOLOGIN

CHRONY:X:997:995::/VAR/LIB/CHRONY:/SBIN/NOLOGIN

POLKITD:X:998:996:USER FOR POLKITD:/:/SBIN/NOLOGIN

SYSTEMD-BUS-PROXY:X:999:997:SYSTEMD BUS PROXY:/:/SBIN/NOLOGIN

DINGJIE:X:1000:1000:DINGJIE:/HOME/DINGJIE:/BIN/BASH

JEFF:X:1001:1024:WOSHIDASHUAIBI:/HOME/JEFF:/BIN/BASH

EGON:X:1002:1002::/HOME/EGON:/BIN/BASH

NFSNOBODY:X:65534:65534:ANONYMOUS NFS USER:/VAR/LIB/NFS:/SBIN/NOLOGIN

5.取出当前主机的IP地址

[root@localhost ~]# ifconfig | egrep "inet.*broadcast.*"|cut -d' ' -f10

192.168.0.133

6.列出/etc目录下所有已.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中

[root@localhost ~]# find /etc -name '*.conf' | egrep -o "[^/]*(\.conf)$"|tr 'a-z' 'A-Z' >/tmp/etc.conf

[root@localhost ~]# cat /tmp/etc.conf

RESOLV.CONF

CA-LEGACY.CONF

FASTESTMIRROR.CONF

LANGPACKS.CONF

SYSTEMD.CONF

VERSION-GROUPS.CONF

LVM.CONF

LVMLOCAL.CONF

ASOUND.CONF

LDAP.CONF

MLX4.CONF

RDMA.CONF

SMTPD.CONF

7.显示/var目录下一级子目录或文件的总数

[root@localhost ~]# ls /var | wc -l

8.取出/etc/group第三个字段数值最小的10个组的名字

[root@localhost ~]# sort -t: -k3 -n /etc/group|head -10 |cut -d':' -f1

root

bin

daemon

sys

adm

tty

disk

lp

mem

kmem

9.将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中

[root@localhost ~]# cat /etc/fstab /etc/issue > /tmp/etc.test

[root@localhost ~]# cat /tmp/etc.test

#

# /etc/fstab

# Created by anaconda on Sat May 13 10:12:58 2017

#

# Accessible filesystems,by reference,are maintained under '/dev/disk'

# See man pages fstab(5),findfs(8),mount(8) and/or blkid(8) for more info

#

/dev/mapper/cl-root / xfs defaults 0 0

UUID=2789d01a-4e2b-47a5-9c3c-537641648663 /boot xfs defaults 0 0

/dev/mapper/cl-swap swap swap defaults 0 0

\S

Kernel \r on an \m

总结

以上所述是小编给大家介绍的Linux grep与正则表达式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

linux grep 正则 id,浅谈Linux grep与正则表达式相关推荐

  1. 实现Linux的whoami命令,浅谈linux中的whoami与 who指令

    whoami 功能说明: 显示用户名称 语法: whoami 补充说明: 显示自身的用户名称,本指令相当于执行  id -un 指令 whoami 与 who am i的区别 who这个命令重点在用来 ...

  2. linux中sh+$0,浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释

    摘抄自:ABS_GUIDE 下载地址:http://www.tldp.org/LDP/abs/abs-guide.pdf linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: ...

  3. Linux系统常用函数,浅谈linux下的一些常用函数的总结(必看篇)

    1.exit()函数 exit(int n)  其实就是直接退出程序, 因为默认的标准程序入口为int main(int argc, char** argv),返回值是int型的. 一般在shell下 ...

  4. linux的多任务 多进程,浅谈linux模拟多线程崩溃和多进程崩溃

    结论是: 多线程下如果其中一个线程崩溃了会导致其他线程(整个进程)都崩溃: 多进程下如果其中一个进程崩溃了对其余进程没有影响: 多线程 #include #include #include #incl ...

  5. Linux命令删除find,浅谈Linux下通过find命令进行rm文件删除的小技巧

    我们经常会通过find命令进行批量操作,如:批量删除旧文件.批量修改.基于时间的文件统计.基于文件大小的文件统计等,在这些操作当中,由于rm删除操作会导致目录结构变化,如果要通过find结合rm的操作 ...

  6. linux cp mv区别,浅谈Linux下mv和cp命令的区别

    1.功能上的区别 mv:用户可以使用该命令为文件或目录重命名或将文件由一个目录移入另一个目录中. cp: 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中. 2.从inode角度来区分 mv:会 ...

  7. linux gz文件压缩比,浅谈Linux下各种压缩 解压命令和压缩比率对比.doc

    浅谈Linux下各种压缩 解压命令和压缩比率对比 浅谈Linux下各种压缩 解压命令和压缩比率对比 Linux下压缩.解压命令五花八门,不像在windows下一个winrar打遍天下无敌手,清一色的. ...

  8. linux 用户shell 无效,浅谈Linux环境下,为什么设置用户ID位对shell脚本无效

    前言: 博主在前不久的一个项目中,项目组的组员需要删除由daemon守护进程创建的缓存文件.但是删除这些缓存文件需要超级用户权限.博主用root用户创建了一个设置用户id的shell脚本来实现此功能. ...

  9. linux read函数_浅谈Linux内核IO体系之磁盘IO

    前言 Linux I/O体系是Linux内核的重要组成部分,主要包含网络IO.磁盘IO等.基本所有的技术栈都需要与IO打交道,分布式存储系统更是如此.本文主要简单分析一下磁盘IO,看看一个IO请求从发 ...

  10. 查linux有哪些task_浅谈Linux线程模型

    Thread Basic 基础概念 线程是操作系统能够调度和执行的基本单位,在Linux中也被称之为轻量级进程.从定义中可以看出,线程它是操作系统的概念,在不同的操作系统中的实现是不同的,不过今天分享 ...

最新文章

  1. Java项目:课程资源管理+在线考试平台(java+SSH+mysql+maven+tomcat)
  2. 万能媒体播放器 PotPlayer
  3. SpringBoot跨域问题解决方案
  4. chrome java虚拟机_JATT:谷歌的Java虚拟机自动调整工具
  5. 头发制作_【绘画教程】动漫人物的头发该怎么画?
  6. UVA 624 CD (01背包 带路径)
  7. nohup java -jar
  8. gstreamer之RTSP Server test-mp4正确运行代码
  9. 关于桌面运维工程师的错题本(前言)
  10. python调用高德地图地理编码/逆地理编码
  11. oracle 逗号连接表是相当于什么
  12. 这里除了安全,什么都不会发生!Docker镜像P2P加速之路
  13. python执行pip指令时,提示“You should consider upgrading……”的解决方法
  14. 巴比特国际站观察 | 海外新晋“网红”亮相,数字人民币引密码社区热议
  15. 关于数据结构和算法的面试题
  16. python实现蓝桥杯真题:猜美国数学家维纳的年龄
  17. 汇川PLC如何连接工业网关实现远程编程和远程上下载程序?
  18. 剑网3:指尖江湖电脑版,如何用模拟器玩
  19. 操作系统实验(八):文件管理
  20. 解决web网页中的字符乱码问题

热门文章

  1. 七月算法机器学习 10 聚类算法与应用
  2. IDEA配置openCV
  3. Atitit uke协会产业分类法 艾提拉产业分类法五大类法 目录 1. 配第-克拉克定理概述 产业趋势 有形财物的生产转向无形的服务性生产 1 1.1. 农工商趋势法 1 1.2. 1940年,英
  4. Atitit 同样是音频输入,AUX接口和麦克风接口有何区别 目录 1.1. 同样是音频输入,AUX接口和麦克风接口有何区别?_百度知道 1 1.2. Aux作用 1 1.3. Aux不能连接普通麦
  5. Atitit oil painting article list sumup s55 C:\Users\Administrator\Desktop\油画技术资料包\Atitit Atitit 图像
  6. Atitit 最近十年来until2018软件开发领域的趋势 艾龙总结 attilax大盘点总结历史与趋势 1. Keyword sec title 2 2. 语言本身: 2 2.1. 工业标准 2
  7. Atitit 数据存储视图的最佳实际best practice attilax总结
  8. Atitit.分布式远程调用  rpc  rmi  CORBA的关系
  9. paip.提升性能----java 无锁结构(CAS, Atomic, Threadlocal, volatile, 函数式编码, 不变对象)
  10. paip.提升用户体验---c++ QLabel标签以及QLineEdit文本框控件透明 设置