首页 > 其他 > 详细

Sed命令学习

时间:2015-01-04 22:46:03      阅读:319      评论:0      收藏:0      [点我收藏+]

1.Sed简介

    流数据编辑器 Stream editer(sed),它是一种行编辑器(对应于全屏编辑器),一次处理一行的内容。默认不编辑原文件内容(-i会直接修改原文件)。处理时,它先将当前符合模式的行存储在临时缓冲区内,处理完之后,把缓冲区的内容送往屏幕打印出来.

 

2.命令格式

   sed  [option] ‘AddressCommand‘  file....

Address

    起始行,结束行; 1,50                                     sed ‘1,10d‘ /etc/fstab

    起始行,+N行;                                            sed ‘1,+3d‘ /etc/fstab

    /正则表达式/ ;  /^root/                                sed ‘/UUID/d‘ /etc/fstab

    /模式1/,/模式2/;第一次被模式1匹配到的行到第二次被模式2匹配到的所有行

    行号;指定要处理的行,$表示最后一行                 sed ‘$d‘ /etc/fstab

 

Command

   d;删除符合条件的行

   p;显示符合条件的行                                                                        sed ‘^UUID/p‘   /etc/fstab

   a  \String; 在符合条件的行后追加String新行                                        sed ‘^UUID/a \#comment‘  /etc/fstab

   i   \String;在符合条件的行前添加String新行

   r   FILENAME;将指定的文件的内容添加至符合条件的行后(合并文件)            sed ‘$r /etc/passwd‘  /etc/fstab

   w  FILENAME;将符合条件范围内的内容另存到指定的文件中                      sed ‘/^UUID/w /tmp/333.txt‘ /etc/fstab

   s   /模式/String/;查找每行中第一次符合条件的内容并替换成String,分割符可以用#,@等,%s表示全文搜索   

   sed ‘s/^UUID/uuid/‘  /etc/fstab                                                     sed ‘s/-/#/‘  /etc/fstab

                                                                                                     

   修饰符   g全局替换,i忽略大小写                                                       sed ‘s/-/#/g‘ /etc/fstab

    

 

 option

    常见的一些选项

     -n  静默模式

     -i   直接修改源文件

     -e   addresscommand -e addresscommand  同时执行多个命令

     -f    /scriptfile 用脚本文件对文件进行处理

     -r   使用扩展正则表达式

    

 3. 例子

   1.删除history行首的所有空格        history | sed ‘s/^[[:space:]]*//g‘

   2.通过脚本添加参数中的用户,参数中的用户用逗号分隔

   addusersh user1,user2,user3

 

   #!/bin/bash

   for l in `echo $1 | sed ‘s/,/ /g‘`;do

           if id $l &> /dev/null;then 

                 echo "$l exists"

           else

                  useradd $l

                       echo $l | passwd --stdin $l &> /dev/null

                       echo "$l added"

           fi

done

    

Sed命令学习

原文:http://www.cnblogs.com/sixue/p/4201613.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!