正则表达式(二)

来源:互联网 发布:淘宝联盟批量链接工具 编辑:程序博客网 时间:2024/06/01 07:19
正则表达式(二)


一、 sed 可以将数据进行取代、删除、新增、截取
   语法:sed [-nefr] [动作]
     -n、使用安静模式。在一般sed的用法中,所有来自stdin的数据一般都会被列出到屏幕上。但是加上-n参数后,则只有经过sed特殊处理的哪一行才会被列出
     -e、直接在指令列模式上进行sed的动作编辑
     -f、直接将sed的动作写在一个文件内,-f filename 则可以执行filename内的sed动作
     -r、sed的动作支持的是扩展正则表达式的语法
     -i、 直接修改读取的文件内容,而不是由屏幕输出
   动作说明:[n1[,n2]] function 
     n1、n2:不一定会存在,一般表示选择进行操作的行数 
     function: 
  a、新增在当前行后面
     c、取代
     d:删除
     i:插入在当前行前面
     p:打印
     s:取代,如 1,20s/old/new/g  
   实例:
     一 、以行为单位的新增、删除功能
1、将 /etc/passwd 的内容列出来且打印行号,同时,将第 2~5 行删除 
nl /etc/passwd | sed '2,5'd
2、承上题,在第二行后加上“hello word”一行
nl /etc/passwd | sed '2a hello word' 
  3、承上题,
在第二行后加上“hello word”两行
 
nl /etc/passwd | sed '2a hello word \ 
> hello word2' 
说明(新增多行时,每一行之间都必须要以反斜杠进行新行的增加)
     二、以行为单位进行取代与显示功能
  1、我想将第 2-5 行的内容取代成为“No 2-5 number
nl /etc/passwd | sed '2,5c No 2-5 number' 
2、列出第10-20行之间的数据
nl /etc/passwd | sed -n '10,20p' 必须加-n 
     三、部分数据的搜索并取代
 
cat /etc/man.config | grep 'MAN'| sed 's/#.*//g'| sed '/^$/d'
二、egrep 扩展这则表达式
  1、+:重复一个或一个以上的前一个字符
  egrep -n 'go+d' regular_express.txt :搜索god good goood
     2、?:零个或者一个的一个字符
  egrep -n 'go?d' regular_express.txt :搜索gd god
     3、|:或者 
     egrep -n 'gd|good' regular_express.txt :搜索gd good
     4、():找出群组
    
egrep -n 'g(la|oo)d' regular_express.txt :搜索glad或者good
     5、()+:多个组群
  echo 'AxyzxyzxyzxyzC' | egrep 'A(xyz)+C' 
     找开头是 A 结尾是 C ,中间有一个以上的 "xyz" 字符串
0 0
原创粉丝点击