grep和 egrep的正则表达式

1、显示三个用户root、wang的UID和默认shell

cat /etc/passwd | grep “^\(root\|wang\)” | tr ‘:’ ‘ ‘| cut -d’ ‘ -f1,3,7

cat /etc/passwd | egrep ‘^(root|wang)’ | tr ‘:’ ‘ ‘ | cut -d’ ‘ -f1,3,7

2、找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行

cat /etc/rc.d/init.d/functions | grep  “^[[:alpha:]][[:alnum:]_]* *()”
3、使用egrep取出/etc/rc.d/init.d/functions中其基名

echo /etc/rc.d/init.d/functions | egrep -o ‘\<[[:alnum:]_\.]*\>/?$'(标准的目录名,字母数字下划线,其他字符不支持)

echo /etc/rc.d/init.d/functions | egrep -o ‘[^/]+*/?$’

4、使用egrep取出上面路径的目录名

echo /etc/rc.d/init.d/functions | egrep -o ‘\<[[:alnum:]_\.]*\>'(标准的目录名,字母数字下划线,其他字符不支持)

echo /etc/rc.d/init.d/functions | egrep -o ‘[^/]+’
5、统计last命令中以root登录的每个主机IP地址登录次数

last | grep ^root | grep ‘[[:digit:]]\{1,3\}\(\.[[:digit:]]\{1,3\}\)\{3\}’\ | tr -s ‘ ‘ ‘:’ | cut -d: -f1,3 | sort -t”:” -k2 | uniq -c
6、利用扩展正则表达式分别表示0-9、10-99、100-199、200-249、250-255

0-9 regex: [[:digit:]]

10-99 regex: [1-9][0-9]

100-199 regex: 1[0-9][0-9]

200-249 regex: [1-2][0-4][0-9]

250-255 regex: 25[0-5]
7、显示ifconfig命令结果中所有IPv4地址

ifconfig | grep -o ‘[[:digit:]]\{3\}\(\.[[:digit:]]\{3\}\)\{3\}’
8、将此字符串:welcome to linux 中的每个字符去重并排序,重复次数多的排到前面

echo ‘welcome to  linux’ | grep -o “.” | sort | uniq -c | sort -rnk1
9、用正则表达式表示出QQ号

qq:  [[:digit:]]\{1,12\}

10、用正则表达式表示出身份证号

15位的身份证号码: 

(1)1~6位为地区代码
(2)7~8位为出生年份(2位),9~10位为出生月份,11~12位为出生日期
(3)第13~15位为顺序号,并能够判断性别,奇数为男,偶数为女。
regex: [[:digit:]]\{8\}\(1[0-2]\|0[1-9]\)\(0[1-9]\|[1-3][0-9]\)[[:digit:]]\{3\}
18位的身份证号码 如:
1~6位为地区代码
7~14位为出生年月日
15~17位为顺序号
18位为校验位包括x
regex: [[:digit:]]\{6\}\(19[[:digit:]]\{2\}\|20[[:digit:]]\{2\}\)\(1[0-2]\|0[1-9]\)\(0[1-9]\|[1-3][0-9]\)[[:digit:]]\{2\}[[:digit:]xX] 最后的regex:\([[:digit:]]\{8\}\(1[0-2]\|0[1-9]\)\(0[1-9]\|[1-3][0-9]\)[[:digit:]]\{3\}\|[[:digit:]]\{6\}\(19[[:digit:]]\{2\}\|20[[:digit:]]\{2\}\)\(1[0-2]\|0[1-9]\)\(0[1-9]\|[1-3][0-9]\)[[:digit:]]\{2\}[[:digit:]xX]\)  11、用正则表达式表示手机号
regex: [[:digit:]]\{11\}
12、用正则表达式表示邮箱: x@y.z.m
regex:[[:alpha:]][[:alnum:]_\.]\{0,20\}@[[:alnum:]_]\{1,30\}\(\.[[:alnum:]_]\{1,30\}\)*
Vim的正则表达式

1、复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的行首的空白字符

cp  /etc/profile /tmp/profile

vim /tmp/profile

:%s@^[[:space:]]*@@g

2、复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首添加一个#号

cp /etc/rc.d/init.d/functions /tmp/functions

vim /tmp/functions

:%s@^[[:space:]]@#&@g

Linux的正则练习的更多相关文章

  1. linux c正则

    c 正则 --------------------------------------------------    标准的C和C++都不支持正则表达式,但有一些函数库可以辅助C/C++程序员完成这一 ...

  2. linux 下正则匹配时间命名格式的文件夹

    用正则表达式匹配时间格式命名的文件夹 ls mypath | grep -E "[0-9]{4}-[0-9]{1,2}" mypath为需要查询的目录 查询出来的文件夹格式为:例 ...

  3. Linux sed正则匹配删除整行

    原文内容: [root@10 tmp]# more test.log 2019-12-01 09:09:02 Failed 2019-12-01 09:12:02 Failed 2019-12-01 ...

  4. linux grep 正则

    grep : 显示匹配行 -v: 反显示 -e 使用扩展正则表达式 黑色字体表明是原生正则表达式 红色字体表明是扩张正则表达式 1.匹配操作符 \: 转义字符串(正则使用扩展字符操作  没有使用-e ...

  5. linux之正则

    grep命令: -V      打印grep的版本号 -E      解释PATTERN作为扩展正则表达式,也就相当于使用egrep. -F      解释PATTERN作为固定字符串的列表,由换行符 ...

  6. linux基础正则

    1.^word #匹配word开头的内容,vi/vim编辑器里^代表一行的开头. 2.word$ #匹配以word结尾的内容,vi/vim编辑器里$代表一行的结尾. 3.^$ #表示空行 4.. #代 ...

  7. Linux篇---Grep和正则匹配

    一.前述 Linux中正则匹配查找比较常用,所以分享一篇关于正则匹配和Grep结合的文章. 二.匹配规则 匹配操作符: \                  转义字符.                 ...

  8. Linux(5):正则表达式 & 权限

    正则表达式: 特殊符号: '' ---> 所见即所得,里面的内容都会被原封不动的输出出来 "" ---> 与单引号类似,但其中的特殊符号会被解析运行 `` ---> ...

  9. Linux 驱动开发

    linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...

随机推荐

  1. java 公共类

    package com.javaweb.mvc; import java.text.*; import java.util.Date; import java.util.Random; public ...

  2. 2019icpc南昌网络赛

    B. Fire-Fighting Hero (dijstra优先队列+bfs) 题意:刚开始看错题了,以为是k次dijkstra,但是wa了,后来队友指正后发现挺水的.求S到其它点的最短路的最大值an ...

  3. idea调试框架时如何能够进入maven依赖包的源码

    最近用idea使用spring security做登录与权限控制,在调试过程中碰到问题,经常需要断点追踪源码,深入查看其中问题.但是maven中引用的包,进入后都是.class文件,非源码.导致查看时 ...

  4. oracle - for in loop 循环更新

    用法:目的更新B表的数据 查询出A表的字段,命名为表1.然后更新B表 BEGIN FOR 表1 IN ( SELECT [匹配字段],[更新字段] FROM A表 ) loop UPDATE B表 S ...

  5. Redis 数据结构 & 原理 & 持久化

    一 概述 redis是一种高级的key-value数据库,它跟memcached类似,不过数据可以持久化,而且支持的数据类型也很丰富. Redis支持五种数据类型:string(字符串),hash(哈 ...

  6. (六)Java秒杀项目之接口优化

    一.Redis预减库存减少数据库访问 思路:减少数据库访问 1.系统初始化,把商品库存数量加载到Redis 2.收到请求,Redis预减库存,库存不足,直接返回,否则进入3 3.请求入队,立即返回排队 ...

  7. php实现算法

    二分法查找(已排序) @params  $arr 查找的数组  $start 开始查找的下标  $end 结束查找的下标  $value 查找的值 function bin_search($arr,$ ...

  8. Python二、十、八进制相互转换

    进制转换:先介绍用传统数学方法,再介绍用python内置方法 二进制转十进制: 1101 转为十进制 1*2^(4-1)+1*2^(3-1)+0*2^(2-1)+1*2^(1-1) 即各个位拆开,乘以 ...

  9. S02_CH07_ ZYNQ PL中断请求

    S02_CH07_ ZYNQ PL中断请求 7.1 ZYNQ 中断介绍 7.1.1 ZYNQ中断框图 可以看到本例子中PL到PS部分的中断经过ICD控制器分发器后同时进入CPU1 和CPU0.从下面的 ...

  10. gin获取全部参数

    原文链接:https://blog.csdn.net/keyunq/article/details/82226280 一直都是用结构体接收参数,假如事先不清楚参数名,或者参数是不固定的,就要动态获取. ...