sed 用法总结

语法:
sed option 'commands' file
sed 参数 (定址)命令 文件


参数:
-n 安静模式,只显示匹配到的行。默认情况下会将全文件内容显示
-e 直接在指令列模式下进行编辑 (多个命令的组合,就是处理前一个命令处理后的结果)
-f 调用脚本文件
-i 直接对源文件进行修改(原始文件内容会发生变化,慎用!)
-r 使用扩张正则表达式


定址: 
   确定要处理文件的哪些行,有数字和正则两种,默认是全文本替换
   数字
    n 文件的第n行
    n1,n2 文件的第n1到n2行
    $ 文件的最后一行
   正则
   /abc/ 包含abc的行
   1,/abc/ 从第一行到第一个包含abc的行
  /123/,/abc/ 从所有123的行到abc的行 都会被打印出来


命令:
a  新增一行 a后面跟要添加的内容
   示例:
   在文件的第一行的后面添加new line行
   sed '1a new line '  filename
  在文件的第一行的后面添加new line1 、new line2 两行(\n表换行)
  sed '1a new line1\nnew line2' filename
   在文件的第1到3行的后面一次添加  new line行(注意,new前面有一空格)
   sed '1,3a \ new line ' filename
d 删除选中的行(注意,在没有加参数-i的情况下,不会对文件内容进行删除)
   示例:
   删除文件的的第一行
   sed '1d' filename
   删除文件的第2到最后一行
   sed '2,$d' filename
   删除文件中以#号开头的行
   sed '/^#/d' filename 
p 显示匹配到的内容,一般与参数-n一起使用
  示例:
  显示文件的第8到15行
  sed -n '3,19p' filename 
  显示文件中包含abc 的行
  sed -n '/abc/p' filename
s 替换内容  
  示例:
  将第1到10行的a字符替换为A
   sed '1,10s/a/A/g' filename
  将所有行中的的第二个a替换为A
   sed 's/a/A/2' filename 
  将包含abc的行中的a替换为A
   sed  '/abc/s/a/A/' filename
   将包含字符串123的后三个字符 替换为ABC
   sed  's/\(123\)/.\{3\}/1ABC/' filename 
   在每个abc字符串后面追加123
   sed 's/abc/&123/g' filename
c 替换行的内容
  示例:
  将第一行的内容替换为 lin1
   sed '1c line1' filename 
r 在匹配行的后面追加制定文件内容
  示例:
  在第1行的后面追加file文件的内容
   sed  '1r filw' filename 
 在包含abc的每一行后面追加file文件内容
  sed '/abc/r file' filename
n 移动到匹配行的下一行
  示例:
  将包含abc的下一行替换为new line
   sed '/abc/{n;s/.*/new line/}' filename 
  打印偶数行的内容
   sed  -n 'n;p' filename 
N 追加下一行到空间模式,两行合成一行
    示例:
   将文件中包含abc的行与后面一行的内容合并
     sed -n '/abc/N;s/\/n//;p' filename 
b 跳转到制定标签
  示例:
   将文件中第一次出现的abc替换为ABC
   sed  ':aN;$!ba;s/abc/ABC/1' filename 


正则匹配:

 元字符    功能                示例
 ^         行首定位符         /^my/  匹配所有以my开头的行
 $          行尾定位符         /my$/  匹配所有以my结尾的行
 .          匹配除换行符以外的单个字符           /m..y/  匹配包含字母m,后跟两个任意字符,再跟字母y的行
 *         匹配零个或多个前导字符                  /my*/  匹配包含字母m,后跟零个或多个y字母的行
 []         匹配指定字符组内的任一字符         /[Mm]y/  匹配包含My或my的行
 [^]       匹配不在指定字符组内的任一字符   /[^Mm]y/  匹配包含y,但y之前的那个字符不是M或m的行
 ..          保存已匹配的字符                        1,20s/youself/\1r/  标记元字符之间的模式,并将其保存为标签1,之后可以使用\1来引用它。最多可以定义9个标签,从左边开始编号,最左边的是第一个。此例中,对第1到第20行进行处理,you被保存为标签1,如果发现youself,则替换为                                                                your。
 &         保存查找串以便在替换串中引用      s/my/**&**/  符号&代表查找串。my将被替换为**my**
 \<        词首定位符                               /\<my/  匹配包含以my开头的单词的行
 \>        词尾定位符                               /my\>/  匹配包含以my结尾的单词的行
 x\{m\}   连续m个x                              /9\{5\}/ 匹配包含连续5个9的行
 x\{m,\}  至少m个x                              /9\{5,\}/   匹配包含至少连续5个9的行
 x\{m,n\}  至少m个但不超过n个x          /9\{5,7\}/  匹配包含连续5到7个9的行


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30337548/viewspace-2126314/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30337548/viewspace-2126314/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值