• Sed命令学习


    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

        

  • 相关阅读:
    如何编写属于自己的事件集合
    Android文件操作(可应用于JAVA)
    Share Point 2007 copy webservices overwrite exist file
    cnBlog的windows live writer 客户端配置
    VS 2012 找回消失的“创建单元测试”
    Oracle函数参考
    哲理小故事(一)
    输入框信息提示
    实现记住用户登陆名
    常用正则表达式
  • 原文地址:https://www.cnblogs.com/sixue/p/4201613.html
Copyright © 2020-2023  润新知