12.26&12.27 -正则表达式

12.26&12.27

正则表达式

第1章 使grep/egrep 过滤出的东西加上颜色

cat >>/etc/profile<<EOF

alias grep='grep --color=auto'

alias egrep='egrep --color=auto'

EOF

source /etc/profile

alias grep egrep

第2章 正则表达式分类

2.1 基础正则表达式:basic    regular expression  BRE

 ^  $  .  *  []  [^]   \

2.2 扩展正则表达式:extended regular expression  ERE

 +  ()  {}  ?

2.3 正则与通配符区别:

作用                    支持的命令

通配符:   查找文件名              Linux大部分命令都支持  以.txt结尾的文件

正则:     在文件中过滤内容        sed,grep,awk  Python Java

2.4 使用正则表达式注意事项

1.正则表达式按照行为单位处理

2.正则神坑-中文符号

‘’ “” () 。 * …… ¥ | {}  【】

''   ""   ()  .  *  ^    $ | {}   []

3.区分大小写

环境

cat oldboy.txt

I am oldboy teacher!

I teach linux.

I like badminton ball ,billiard ball and chinese chess!

my blog is http://oldboy.blog.51cto.com

our size is http://blog.oldboyedu.com

my qq is 49000448

not 4900000448.

my god ,i am not oldbey,but OLDBOY!

第3章 基础正则(BRE)

3.0.1 ^   以……开头的行

grep  ‘^m’ /oldboy.txt         以m开头的行

3.0.2 $   以……结尾的行         

grep  ‘m$’ /oldboy.txt

神坑:::::有的行结尾有时候会多个空格

   cat   -A   显示出文件中的特殊标记    行尾   $标记

 

3.0.3 ^$  空行  什么都没有(包括空格也没有)

grep -v '^$' oldboy.txt    排除文件中的空行

grep  -n   显示行号

3.0.4  .  任意一个字符     不会匹配空行

grep  ‘.’ oldboy.txt

grep  -o      显示命令执行过程,显示grep命令每一次找到了什么

  空格也执行一次命令

3.0.5 * 前一个字符连续出现了0次或0次以上

grep ‘0*’  oldboy.txt

坑:过滤的目标出现了0次的时候,会显示整个文件的内容

3.0.6 .*    所有 任何符号  包含空行

贪婪性    (  .  *  .*  +  ?  )

1. .*所有符号 任何符号 连续出现的字符  有多少匹配多少

2. 正则表达 所有符号 或 连续出现 会表现出贪婪性

3. 匹配到最后一个符合的条件---------(贪婪性)

找出以m开头并以m结尾的行     ---- 并且

[[email protected] oldboy]# grep '^m.*m$' oldboy.txt

my blog is http://oldboy.blog.51cto.com

 

3.0.7 \  撬棍   转义字符   脱掉马甲打回原形

找出文件中以.结尾的行

[[email protected] log]# grep '\.$' /oldboy/oldboy.txt

I teach linux.

not 4900000448.

tr命令       1.不能直接修改文件内容

                2.一对一替换

   特点         3.无法直接读取文件内容 接 <

\n    =====回车

例:把文件中的空格替换为回车

[[email protected] oldboy]# tr '\n' ' ' oldboy.txt       回车替换为空格

tr: extra operand `oldboy.txt'             tr不能直接读取文件

Try `tr --help' for more information.      必须加<输入重定向符号

[[email protected] oldboy]# tr '\n' ' ' <oldboy.txt

I am oldboy teacher! I teach linux.  I like badminton ball ,billiard ball and chinese chess! my blog is http://oldboy.blog.51cto.com our size is http://blog.oldboyedu.com my qq is 49000448  not 4900000448. my god ,i am not oldbey,but OLDBOY!

报错:tr命令无法直接读取文件   必须加<      不能修改文件内容

替换:把123替换为abc                sed 阉割版

[[email protected] oldboy]# echo 123123|tr '123' 'abc'

abcabc

一对一替换

[[email protected] oldboy]# echo 12332|tr '123' 'abc'

abccb

3.0.8 [ ]    [abc] 找出包含a或b或c的行   []字符内没有特殊含义

单个字符分割,以连接

找出以小写字母开头并以.或!结尾的行

[[email protected] oldboy]# grep '^[a-z].*[.!]$' oldboy.txt

not 4900000448.

my god ,i am not oldbey,but OLDBOY!

3.0.9 [^]   排除,相当于是一个符号(每次匹配一个字符)  排除a或b或c   

找出文件中不是以m或n开头的行

[[email protected] oldboy]# grep '^[^mn]' oldboy.txt

I am oldboy teacher!

I teach linux.

I like badminton ball ,billiard ball and chinese chess!

our size is http://blog.oldboyedu.com

grep/egrep ‘[a-Z]’

第4章 扩展正则(ERE)

4.0.1 +   前一个字符连续出现一次或多次

grep -E ===egrep

[[email protected] log]# egrep '0+' /oldboy/oldboy.txt

my qq is 49000448

not 4900000448.

+小结:

1.前一个字符连续出现1次或一次以上

2.+一般与[]进行配合

例题:

lidao.×××

cat id.txt

汤 610702199107053598

邹 371481199403259478

莫 52020319810613433X

韩 460106199111137270

荣 530124197504135438

荣 oldboy

荣 babygirl

荣 530124197504135438

阮 360702197902169951

翁 331002198504132813

任 621223198708245176

姜 370602198507189574

霍 320904198403048179

如何判断用户的×××号码是否正确?

特殊符号帮助我们处理文件====正则表达式

在文件中过滤出你想要的或不想要的内容

解答:   egrep '[0-9X]+'  id.txt

[[email protected] log]# egrep '[0-9X]+' /oldboy/id.txt

汤 610702199107053598

邹 371481199403259478

4.0.2  |   或者

找出3306或1521端口服务

[[email protected] log]# egrep '3306|1521' /etc/services

mysql           3306/tcp                        # MySQL

mysql           3306/udp                        # MySQL

ncube-lm        1521/tcp                # nCube License Manager

ncube-lm        1521/udp                # nCube License Manager

4.0.3 ()   表示一个整体   反/后向引用

找出文件中包含oldboy或oldbey的行

[[email protected] log]# egrep 'oldb(o|e)y' /oldboy/oldboy.txt

I am oldboy teacher!

my blog is http://oldboy.blog.51cto.com

our size is http://blog.oldboyedu.com

my god ,i am not oldbey,but OLDBOY!

4.0.4 ( ) 反向引用/后向引用----sed    先保护在使用

sed  -r   识别扩展正则

使输出结果为 12<34>56         这个就叫后向引用

[[email protected] oldboy]# echo 123456 |sed -r 's#(12)(34)(56)#\1<\2>\3#g'

12<34>56                          \2对应前面第几个

12.27

4.0.5 {}   0{n,m} 前一个字符至少连续出现了n次,最多连续出现了m次

0{n,m}  前一个字符至少连续出现n次,最多连续出现了m次

0{n}   前一个字符连续出现n次

0{n,}   前一个字符至少连续出现n次

0{,m}  前一个字符最多连续出现了m次

例:查找文本中0最少出现3次最多出现4次的行

[[email protected] oldboy]# egrep '0{3,4}' oldboy.txt

my qq is 49000448

not 4900000448.

例:查找文本中0出现3次的行

[[email protected] oldboy]# egrep '0{3}' oldboy.txt

my qq is 49000448

not 4900000448.

找出0连续出现了三次的行(正好三次)

[[email protected] oldboy]# egrep '^.*[^0]0{3}[^0].*$' oldboy.txt

my qq is 49000448

错误:加号在花括号前面,花括号失效

4.0.6 ?前一个字符出现零次或一次

[[email protected] oldboy]# cat good.txt

good

gd

god

goood

[[email protected] oldboy]# egrep 'go?d' good.txt

gd

god

4.1 ERE小结

1. +一般与[]进行配合 把各种连续的东西取出来

2. |   或

3. ()  一个整体   后向引用---sed

4. {}   0{n,m} 前一个字符至少连续出现了n次,最多连续出现了m次

5. ?  前一个字符出现了零次或一次

4.2 基础正则与扩展正则的区别

基础正则:   grep/sed/awk

扩展正则:  egrep/sed -r/awk

4.3 grep/sed 可以加\转义符号识别扩展正则

[[email protected] oldboy]# grep 'go\+d' good.txt

good

god                    \只能转义对单个字符   鸡肋

goood

补充:了解

4.4 正则总结

1. grep/egrep      -o和颜色是grep独有

2. 一步步分解

4.5 正则学习资料

man  grep

info  sed/awk/grep

https://www.gnu.org/software/grep/manual/grep.html

原文地址:http://blog.51cto.com/13517084/2056250

时间: 2024-10-07 18:11:43

12.26&12.27 -正则表达式的相关文章

12.26~12.30工作日志

2016.12.26/27 1.writing-mode: vertical-rl;在电脑显示有效果,在手机端无效 解决办法:改为 -webkit-writing-mode: vertical-rl; 2.div设置inline-block之后,如果没有设置固定宽高,div内的内容将正常显示,div缩为一个点????????? 3.设置float的元素最好设置好宽度,便于控制 4.document.getElementsByClassName(classname)获取的是数组数组!!!!就算获取

VMware Workstation 11 安装MAC OS X 10.10 Yosemite(14B25)图解 2015-01-13 12:26:01|

VMware Workstation 11 安装MAC OS X 10.10 Yosemite(14B25)图解 2015-01-13 12:26:01|  分类: 网络互联 |  标签:10.10  yosemite  vmware  |举报|字号 订阅 http://lbq20042002.blog.163.com/blog/static/8235302015013111858664/ 下载LOFTER我的照片书  | VMware Workstation 11 安装MAC OS X 10.

AI行业精选日报_人工智能(12&#183;26)

浙江「AI 法官」助民间借贷纠纷实现全流程智审 「现在进行法庭发问.原告,你与被告是何关系?」12 月 24 日,在杭州市下城区人民法院,法官王颖没有出声,法庭已响起了对原被告的提问.原来 AI 法官助理「小智」已将事实性问题列表实时推送到了显示屏上,法官只须点击具体问题,即可由「小智」完成发问.开庭后仅 30 分钟,原被告双方已收到判决书.点击结案后,「小智」提示法官:「案件已自动进入归档程序,庭审视频与庭审笔录可同步对应点击回看.」这场由「小智」和法官共同参与的民间借贷纠纷智能审理高效完成.

12.19&amp;12.20 -基础命令练习二

12.19&12.20 基础命令练习二 第1章 Linux开机启动过程 linux启动过程 1.开启开关 2.bios开机自检 3.mbr引导 4.grub菜单 选择内核 5.加载内核 6.启动init进程  init进程是linux启动的时候运行的第一个进程 7.从/etc/inittab读取运行级别 8.根据/etc/rc.d/rc.sysinit 初始化系统 (设置主机名 ip地址) 9.根据运行级别启动对应的软件(开机自启动软件) 10.运行mingetty 显示登录界面 第2章 PAT

12.24 ~ 12.30周训练计划+总结

12.24 min25筛裸题 https://loj.ac/problem/6053 补题 https://lydsy.com/JudgeOnline/problem.php?id=4036 fwt+子集反演 https://lydsy.com/JudgeOnline/problem.php?id=3302 树形dp https://lydsy.com/JudgeOnline/problem.php?id=4057 状压 https://lydsy.com/JudgeOnline/problem

12.1 LNMP架构介绍12.2 MySQL安装12.3/12.4 PHP安装12.5 Nginx

12.1 LNMP架构介绍 13.12.2 MySQL安装 [[email protected] ~]# service mysql stopRedirecting to /bin/systemctl stop mysql.service[[email protected] ~]# ps -aux |grep mysqlroot 1064 0.0 0.0 112676 956 pts/0 S+ 23:07 0:00 grep --color=auto mysql[[email protected

12.1LNMP架构介绍12.2 MySQL安装12.3/12.4 PHP安装12.5 Nginx介绍

12.1 LNMP架构介绍 12.2 MySQL安装 12.3/12.4 PHP安装 12.5 Nginx介绍 扩展 Nginx为什么比Apache Httpd高效:原理篇 http://www.toxingwang.com/linux-unix/linux-basic/1712.html apache和nginx工作原理比较 http://www.server110.com/nginx/201402/6543.html mod_php 和 mod_fastcgi以及php-fpm的比较 htt

第三次冲刺12.07~12.15

在第二阶段冲刺还是没有如期完成我们想要的功能时,我们就开始调整. 下面是前段时间的燃尽图: 12.7 12.8 12.9 12.10 12.11 12.12 12.13 12.14 12.15

2016年12月12日《每天听本书》

12月12日<每天听本书> 2016-12-12 非舒适区学习 先为大家简要截取罗胖亲自介绍 现在为大家简要截取 今天罗辑社的每天听本书 微信群发布情况介绍 所有好书,还会进行存盘存储 微信云盘+百度网盘双存储 微云是纯音频存盘方便听 百度网盘是完整版方便存 下面是罗辑思维得到app上 <每天听本书>最近7天存储更新 感谢171位书友加入<每天听本书>年共享 罗胖60秒语音重磅推荐<每天听本书> 每天4.99元一本,365天,每天一本. 1年需要:4.99×