首页 > 代码库 > linux之正则表达式

linux之正则表达式

正则表达式

在linux中,通配符是由shell解释的,而正则表达式是由命令解释的。主要的文本处理工具有grep,sed和awk。

 

grep匹配模式

  grep按下述方式接受选项和参数   

  grep [options] regex [files]

 

参数主要有

-i  ------------忽略大小写

-o  ------------只显示匹配的内容

-v  ------------取反,不匹配

-l  -------------输出匹配的文件名

-L  -------------输出不匹配的文件名

-c  -------------count 输出匹配的数目(行数)

-n  -------------输出匹配行同时加上行号

-A  -------------输出匹配行,及其后面的n行

 

正则字符

^  ------------行首标记,在[^]表示非

$ -------------结束标记 ‘abc$‘----->abc,hhhhabc

.  -------------任意字符 ‘a.c‘-------->abc,atc,ajc

|  -------------    或    --------> ‘aaa|bbb‘----->aaa,bbbc

正则范围

? ----------------左边第一个字符出现0次或一次

*  ----------------左边第一个字符出现0到n次

+ -----------------左边第一个字符出现1到n次

{} ----------------{m}{m,n}{m,}{,n}左边第一个字符出现m/m到n/>m/<n 次

()--------------将候选的元素列出来用|分割--(ab|1|2|3)--代表ab1 ab2或ab3

 

例子

grep ‘root‘ /root/test/z.txt---------------显示z.txt中含有root的行

egrep ‘^[a-Z]+[0-9]+[a-Z]‘  z.txt-----------过滤出字母+数字+字母的行

技术分享

 

 sed流编辑器


sed是一种在线编辑器,它一次处理一行内容,可以将数据进行替换、删除、新增、选取等特定工作

  sed的命令格式为

sed  [options]  ‘command‘  in_file

 

options

-i:直接修改读取的档案内容

-n:使用安静模式。一半sed用法,文件所有内容都会背列到屏幕上,如果加上-n参数后,只有经过sed特殊处理的那一行才会被列出来。

-e:直接在指令列模式上进行sed的动作编辑

-r:扩展正则表达式

command

‘[地址1,地址2][函数][参数]‘

1:单行

1,3:范围,从第一行到第三行

$:尾行

正则必须用//包裹起来

 

函数

a:新增,a插入的字符串在新的一行出现。

c:取代,c后面接字符串,取代n1,n2之间的行。

d:删除,

i:插入,插入的字符串在目标行的上一行出现。

p: 打印,选择某个行打印出来,通常与sed -n连用。打印固定行

s:取代,替换,通常与正则表达式连用, 例如 1,20s/old/new/g  

字符串替换:

sed -n ‘s/root/zzzz/p‘ z.txt---------替换root为zzzz,并打印出来。如需全部替换,末尾加g

$ sed -n ‘s/root/XXXX/2p‘ z.txt----替换没行第二个root为,XXXX。

技术分享

17,打印每行的第一个单词和第三个单词。

技术分享

 

linux之正则表达式