zoukankan      html  css  js  c++  java
  • sed命令

    1.sed简介

    Linux sed 命令是利用脚本来处理文本文件。

    sed 可依照脚本的指令来处理、编辑文本文件。

    Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
    语法

    sed [-hnV][-e<script>][-f<script文件>][文本文件]
    

    参数说明

    • -i:直接修改文件内容
    • -f:<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
    • -h:或--help 显示帮助。
    • -n:或--quiet或--silent 仅显示script处理后的结果。
    • -V:或--version 显示版本信息。
    • -e:<脚本>或--expression=<脚本> 以选项中指定的script来处理输入的文本文件。
    • -r:启用扩展的正则表达式,若与其他选项一起使用,应作为首个选项
    • -{}:可组合多个命令,以分号分隔

    动作说明

    • a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
    • c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
    • d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
    • p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
    • s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

    正常情况下,sed命令所做的处理只是把操作结果(包括打印、删除等)输出到当前终端屏幕,而并不会对原始文件做任何更改。若希望直接修改文件内容,应添加选项 -i 。为了避免生产环境中因误操作导致系统故障,使用时要谨慎。

    2.实例

    2.1给文件的每一行加注释

    [root@localhost ~]# cat sed 
    hubei
    hunan
    beijin 
    shanghai
    guandong
    shenzheng
    hainan
    jiangxi
    fujian
    shangdong
    hebei
    tianjin
    [root@localhost ~]# sed -i 's/^/#/g' sed 
    [root@localhost ~]# cat sed 
    #hubei
    #hunan
    #beijin 
    #shanghai
    #guandong
    #shenzheng
    #hainan
    #jiangxi
    #fujian
    #shangdong
    #hebei
    #tianjin
    

    2.2给文件中的指定行加注释

    [root@localhost ~]# cat sed
    hubei
    hunan
    beijin 
    shanghai
    guandong
    shenzheng
    hainan
    jiangxi
    fujian
    shangdong
    hebei
    tianjin
    [root@localhost ~]# sed -i 's/^h/#&/' sed
    [root@localhost ~]# cat sed 
    #hubei
    #hunan
    beijin 
    shanghai
    guandong
    shenzheng
    #hainan
    jiangxi
    fujian
    shangdong
    #hebei
    tianjin
    
    //在文件的第一行的行首加注释
    [root@localhost ~]# cat sed 
    beijin 
    shanghai
    guandong
    shenzheng
    jiangxi
    fujian
    shangdong
    tianjin
    [root@localhost ~]# sed -i '1s/^/#/g' sed
    [root@localhost ~]# cat sed 
    #beijin 
    shanghai
    guandong
    shenzheng
    jiangxi
    fujian
    shangdong
    tianjin
    
    //在文件中的第三行行首加注释
    [root@localhost ~]# sed -i '3s/^/#/g' sed
    [root@localhost ~]# cat sed 
    #beijin 
    shanghai
    #guandong
    shenzheng
    jiangxi
    fujian
    shangdong
    tianjin
    
    //在文件中的1-3行行首加注释
    [root@localhost ~]# cat sed 
    beijin 
    shanghai
    guandong
    shenzheng
    jiangxi
    fujian
    shangdong
    tianjin
    [root@localhost ~]# sed -i '1,3s/^/#/g' sed
    [root@localhost ~]# cat sed 
    #beijin 
    #shanghai
    #guandong
    shenzheng
    jiangxi
    fujian
    shangdong
    tianjin
    

    2.3取消文件中所有注释

    [root@localhost ~]# cat sed 
    #beijin 
    #shanghai
    #guandong
    #shen#zheng
    #jiangxi
    #fujian
    #shangdong
    #tianjin
    [root@localhost ~]# sed -i 's/#//g' sed 
    [root@localhost ~]# cat sed 
    beijin 
    shanghai
    guandong
    shenzheng
    jiangxi
    fujian
    shangdong
    tianjin
    

    2.4取消指定行的注释

    //取消文件中第二行的所有注释
    [root@localhost ~]# cat sed 
    beijin 
    #shang#hai
    #guandong
    shenzheng
    jiangxi
    fujian
    shangdong
    tianjin
    [root@localhost ~]# sed -i '2s/#//g' sed 
    [root@localhost ~]# cat sed 
    beijin 
    shanghai
    #guandong
    shenzheng
    jiangxi
    fujian
    shangdong
    tianjin
    
    //取消文件中1-3行中的所有注释
    [root@localhost ~]# cat sed 
    beijin 
    #shanghai
    #guandong
    #shenzheng
    jiangxi
    fujian
    shangdong
    tianjin
    [root@localhost ~]# sed -i '1,3s/#//g' sed 
    [root@localhost ~]# cat sed 
    beijin 
    shanghai
    guandong
    #shenzheng
    jiangxi
    fujian
    shangdong
    tianjin
    
    //取消‘shenzheng’这行的注释
    [root@localhost ~]# cat sed 
    beijin 
    shanghai
    guandong
    #shenzheng
    jiangxi
    fujian
    shangdong
    tianjin
    [root@localhost ~]# sed -i '/shenzheng/s/#//g' sed 
    [root@localhost ~]# cat sed 
    beijin 
    shanghai
    guandong
    shenzheng
    jiangxi
    fujian
    shangdong
    tianjin
    
    //取消‘shenzheng’这一行的所有注释
    [root@localhost ~]# cat sed 
    beijin 
    shanghai
    guandong
    #shen#zheng huan #ying ni
    jiangxi
    fujian
    shangdong
    tianjin
    [root@localhost ~]# sed -i '/shen/s/#//g' sed 
    [root@localhost ~]# cat sed 
    beijin 
    shanghai
    guandong
    shenzheng huan ying ni
    jiangxi
    fujian
    shangdong
    tianjin
    

    3.删除

    3.1删除指定行

    //删除问文件中第二行
    [root@localhost ~]# cat sed 
    beijin 
    shanghai
    guandong
    shenzheng huan ying ni
    jiangxi
    fujian
    shangdong
    tianjin
    [root@localhost ~]# sed -i '2d' sed 
    [root@localhost ~]# cat sed 
    beijin 
    guandong
    shenzheng huan ying ni
    jiangxi
    fujian
    shangdong
    tianjin
    
    //删除文件中第5行到最后一行
    [root@localhost ~]# cat sed 
    beijin 
    guandong
    shenzheng huan ying ni
    jiangxi
    fujian
    shangdong
    tianjin
    [root@localhost ~]# sed -i '5,$d' sed 
    [root@localhost ~]# cat sed 
    beijin 
    guandong
    shenzheng huan ying ni
    jiangxi
    

    4.搜索

    //打印出文件中第2行到第4行的内容
    [root@localhost ~]# cat sed 
    beijin 
    guandong
    shenzheng huan ying ni
    jiangxi
    [root@localhost ~]# sed -n '2,4p' sed 
    guandong
    shenzheng huan ying ni
    jiangxi
    
    //打印出文件中含有‘i’的行
    [root@localhost ~]# cat sed 
    beijin 
    guandong
    shenzheng huan ying ni
    jiangxi
    hubei
    hunan
    yunnan
    [root@localhost ~]# sed -n '/i/p' sed 
    beijin 
    shenzheng huan ying ni
    jiangxi
    hubei
    
    //搜索出文件中含有‘h’的行,进行删除后显示删除后的剩余行
    [root@localhost ~]# cat sed 
    beijin 
    guandong
    shenzheng huan ying ni
    jiangxi
    hubei
    hunan
    yunnan
    [root@localhost ~]# sed  '/h/d' sed 
    beijin 
    guandong
    jiangxi
    yunnan
    

    5.替换

    //将文件中的‘ni’替换为‘wo’
    [root@localhost ~]# cat sed 
    beijin 
    guandong
    shenzheng huan ying ni
    jiangxi
    hubei
    hunan
    yunnan
    [root@localhost ~]# sed -i 's/ni/wo/g' sed 
    [root@localhost ~]# cat sed 
    beijin 
    guandong
    shenzheng huan ying wo
    jiangxi
    hubei
    hunan
    yunnan
    
    //每一行结尾若为. 则换成 !
    [root@localhost ~]# cat sed 
    beijin. 
    guandong,
    shenzheng huan ying wo.
    jiangxi-
    hubei-
    hunan.
    yunnan
    [root@localhost ~]# sed -i 's/.$/!/g' sed 
    [root@localhost ~]# cat sed 
    beijin. 
    guandong,
    shenzheng huan ying wo!
    jiangxi-
    hubei-
    hunan!
    yunnan
    

    6.sed高级用法

    //配合awk取出本机的ip
    [root@localhost ~]# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 00:0c:29:43:45:11 brd ff:ff:ff:ff:ff:ff
        inet 192.168.0.160/24 brd 192.168.0.255 scope global noprefixroute dynamic ens33
           valid_lft 4648sec preferred_lft 4648sec
        inet6 fe80::ad8c:10d3:b579:8614/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    [root@localhost ~]# ip a|grep 'inet'|sed -n '3p'|awk '{print $2}'|sed 's//24//g'
    192.168.0.160
    
  • 相关阅读:
    重新想象 Windows 8 Store Apps (15) 控件 UI: 字体继承, Style, ControlTemplate, SystemResource, VisualState, VisualStateManager
    重新想象 Windows 8 Store Apps (12) 控件之 GridView 特性: 拖动项, 项尺寸可变, 分组显示
    返璞归真 asp.net mvc (10) asp.net mvc 4.0 新特性之 Web API
    与众不同 windows phone (29) Communication(通信)之与 OData 服务通信
    与众不同 windows phone (33) Communication(通信)之源特定组播 SSM(Source Specific Multicast)
    与众不同 windows phone (27) Feature(特性)之搜索的可扩展性, 程序的生命周期和页面的生命周期, 页面导航, 系统状态栏
    与众不同 windows phone (30) Communication(通信)之基于 Socket TCP 开发一个多人聊天室
    返璞归真 asp.net mvc (12) asp.net mvc 4.0 新特性之移动特性
    重新想象 Windows 8 Store Apps (2) 控件之按钮控件: Button, HyperlinkButton, RepeatButton, ToggleButton, RadioButton, CheckBox, ToggleSwitch
    重新想象 Windows 8 Store Apps (10) 控件之 ScrollViewer 特性: Chaining, Rail, Inertia, Snap, Zoom
  • 原文地址:https://www.cnblogs.com/liping0826/p/13214013.html
Copyright © 2011-2022 走看看