正则表达式

1:什么是正则表达式:

简单的说,正则表达式就是处理字符串的方法,它是以行为单位进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,可以让用户轻易达到查找,删除,替换某特定字符串的处理程序。

2:一些参数:
grep [-A] [-B] [–color=auto] ‘收索字符串’ filename

-A :后面可加数字,为after的意思,除了列出该行以外,后续的n行也被列出来。

-B :后面可加数字,为befer的意思,除了列出该行以外,前面的n行也被列出来。

–color=auto:可将正确的那个选取数据列出颜色

范例一:

dmesg | grep ‘eth’

#dmesg 可以列出内核的信息,通过grep选取网卡相关信息。

范例二:

dmesg | grep -n –color-auto ‘eth’

[root@Slave0 hadoop]# dmesg | grep -n –color=auto ‘eth’
452:[   11.213498] 8021q: adding VLAN 0 to HW filter on deviceeth0
发现除了eth会有特殊的颜色,且加上行号显示。

三:基础正则表达式练习:

1:查找特定字符串

[root@Master ~]# grep -n ‘ab’ newusers
5:Annabell:Cho:90:1
8:Rebecca:Fabry:60:1
[root@Master ~]# 

如果反向选择呢?也即是说该行没有‘ab’这个字符串才会显示在屏幕上

[root@Master ~]# grep -vn ‘ab’ newusers
1:Betsey:Werts:60:1
2:Henriette:Balla:30:1
3:Julieann:Hopps:30:2
4:Conrad:Menz:60:1
6:Allyn:Kenley:60:1

2:利用中括号[]来查找集合字符。

如果我想找testhe taste这两个单词,可以发现,他们共同有‘t?st’存在,这个时候,我们可以这样查找。

grep -n ‘t[ae]st’ newusers

如果查找到有dd字符时,则使用:

grep -n ‘dd’ newusers

如果不想要dd前面有g,此时可以可用集合字符的反向选择[^]来完成。

grep -n ‘[^g]dd’ newusers

3:行首和行尾字符^$

如果想要字符串‘the’只在行首才列出,之格式化就要用到制表符了,做法如下:

grep -n ‘^the’ filename

如果要列出字母开头

grep -n ‘^[a-z]’ filename

如果不想要开头是字母的

grep -n ‘^[^a-zA-Z]’ filename

注:那个^符号在字符集合符号(中括号[])之内与之外是不一样的,在【】代表“反向选择”,在【】之外则代表定外在行首的意义。

那么如果要找出行位结束为小数点(.)的那一行,该怎么处理呢?

 grep -n ‘\.$’ filename

特别注意,小数点具有其他意义,所以必须使用转义字符(\)加以解除他的特殊意义。

如果要找出空白行:

grep -n ‘^$’ filename

4:任意一个字符.与重复字符*

.(小数点):代表一定有一个任意字符的意思

grep -n ‘g..d’ filename

[root@Master ~]# grep -n a..a newusers
2:Henriette:Balla:30:1
21:Elsa:Casazza:60:3

*(星号):代表重复前一个0到无穷多次的意思,为组合形态。

grep -n ‘ooo*’ filename

注,前两个o肯定要必须存在,第三个o则是可有可无的多个o

四:基础正则表达式字符:

RE字符

意义和范例

^word

查找(word)在行首

word$

查找(word)在行尾

.

代表一定有一个任意的字符

\

将特殊符号的特殊意义去除

*

重复零个到无穷多个的前一个字符

[list]

从字符集合的RE字符里面找出想要选取的字符

[n1-n2]

从字符集合的RE字符里面找出想要选取的字符范围.如:grep -n ‘[0-9]’ filename

[^list]

从字符集合的RE字符里面找出不要的字符串范围。

\{n,m\}

连续n到m个前一个RE字符,若为\{n\}则是连续n个的前一个RE字符,若为\{n,\}则是连续
n个以上的前一个RE字符,
范例:在g与g之间有2到3个o存在的字符串即(goog)(gooog)
grep -n ‘go\{2,3\}g’ filename

 

五:扩展正则表达式:

grep默认仅支持基础正则表达式,如果使用扩展型正则表达式,可以使用grep -e 不过更建议直接使用egrep.

扩展型正则表达式的特殊字符

+

重复一个或一个以上的前一个RE字符

零个或者一个前一个RE字符

|

用或(or)的方式找出数个字符串,
例:查找gd或者good这两个字符串
egrep -n ‘gd|good’ filename

()

找出“组” 字符串
如,找出(glad)或(good)这两个字符串
egrep -n ‘g (la|oo) d’ filename

()+

多个重复组判别

 

 

 

 

 

 

 

 l六:练习

Lifconfig 192.168.0.211

H获取IP

#I if config |grep  [0-9]\{1,3\}  获取第一位“198“ 一到三位数字

               \ ([0-9}\{1,3\}\.\)\{3\} 分成一个组后给其三位“198.

                “\ ([0-9}\{1,3\}\.\)\{3\} [0-9]\{1,3}”  最后给第四组加上

 正则表达式

 

 

 

1,删除文件每行的第一个字符:sed -r ‘s/^.//g’ passwd

正则表达式

 

2,删除文件每行的第二个字符:sed -r ‘s/^(.)(.)/\2/g’ passwd

正则表达式

 

3,删除文件每行的最后一个字符:sed -r ‘s/(.)$//g’ 

正则表达式

 

4,删除文件每行的倒数第二个字符: sed -r ‘s/(.)(.)$/\2/g’ passwd

正则表达式

 

5,删除文件每行的第二个单词:sed -r ‘s/^([a-Z])([^0-9][^a-Z])(a-Z)/\1\2/g’ passwd

 正则表达式

 

 

 

 

 

 

原创文章,作者:linux-qiao,如若转载,请注明出处:http://www.178linux.com/83205

(0)
linux-qiaolinux-qiao
上一篇 2017-07-29 17:41
下一篇 2017-07-29 19:00

相关推荐

  • 命令read

    read命令是一个bash命令,它用于从键盘或标准输入中读取文本.我们可以使用read以交互的形式读取来自用户的输入.并且read还提供一种不需要按回车就能够输入参数的方法. read可以从标准输入中读取单独的一行,或者使用-u选项,从文件描述符FD中读取.并且这单独的行被分隔成多个域,第一个词被赋值给第一个变量,第一个赋值给第二个变量,以此类推,直到剩下的…

    Linux干货 2016-08-12
  • Linux进程管理及作业管理

    进程管理 进程概念 Linux内核:抢占式多任务 内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等 Process: 运行中的程序的一个副本,是被载入内存的一个指令集合 进程ID(Process ID,PID)号码被用来标记各个进程 UID、GID、和SELinux语境决定对文件系统的存取和访问权限 通常从执行进程的用户来继承 进程存…

    Linux干货 2017-05-08
  • liunx初探

    计算机的五大单元: 输出单元、输入单元、cpu内部控制单元、算术逻辑单元和内存。 计算机三大组成部分: 输入单元:键盘、鼠标等等 输出单元:屏幕、打印机等 中央处理器(CPU):含有算术逻辑、控制、记忆等 CPU种类有两种分别是:   精简指令集(RISC):这种cpu微指令比较精简,每个指令的执行时间都很短,完成的操作也很简单。常见的简单指令集C…

    Linux干货 2016-09-14
  • HAProxy实现请求的80端口转发至后端的8000端口并实现动静分离

    一 实验目的 用HAProxy作为负载均衡器,实现把前端请求调度到后端,前端监听80端口,转发至后端的8000端口,并会对访问资源进行判断实现不同的访问内容转发至相对应的服务器。 二 实验拓扑 三 实验环境 IP 功能 192.168.20.108 HAProxy 192.168.237.129 Nginx 192.168.237.130 Nginx+PHP…

    Linux干货 2016-12-19
  • N25第一周学习总结

    第一周学习总结 按照课程要求,本周完成2天的课时,总计8课时。 因为是刚开课,马哥为我们介绍了上课环境,课程体系,还有一些计算机基础理论。内容主要是:          计算机的工作机制        &nbs…

    Linux干货 2016-12-04
  • LVS-nat-dr

    主程序:ipvsadm 配置文件: 规则保存工具:/usr/sbin/ipvsadm-save 规则重载工具:/usr/sbin/ipvsadm-restore 配置文件:/etc/sysconfig/ipvsadm-config ipvsadm使用: 增:      示例:ipvsadm -A -t 172.16.42.1:8…

    2017-08-08