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

    sed命令用于在线编辑文本,它一次处理一行内容。

    命令语法:

    sed [-n/e/f/r/i] [cmd] [InFile]

    参数解释:

    选项与参数:

    -n: quiet/silent,安静模式,经过sed处理过的行才会被列出来 -e script: 将script脚本添加到要执行的命令中
    -f script-file: 将script-file的内容添加到要执行的命令中,即直接运行script-file内的sed命令;

    -i: 直接编辑源文件

    -r: redxp-extended,在脚本中使用扩展的正则表达式


    操作cmd:

    c: copy,用新文本替换当前行中的文本

    d: delete, 删除行

    i: insert,在当前行之前插入文本

    a: add,在当前行之后新增一行或多行

    s: separate,替换一行中的部分文本,一般与正则表达式一起使用

    p :列印,即将某个选择的数据列出

    栗子

    # sed.txt
    
    mac 2000
    winxp 4000
    linux 1000
    win7 1000
    linux 1000

    1. 替换(c)

    1)替换第1行为shell

    sed '1c shell' sed.txt

    结果为:

    shell
    winxp 4000
    linux 1000
    win7 1000
    linux 1000

    2)替换1-3行为java

    sed '1,3c java' sed.txt

    结果为:

    java
    win7 1000
    linux 1000

    3)嵌入正则表达式,用 /   / 包住。替换所有包含 win 的行为python

    sed '/win/c python' sed.txt

    结果为:

    mac 2000
    python
    linux 1000
    python
    linux 1000

    2.  删除(d)

    1)删除第2行

    sed '2d' sed.txt

    结果为:

    mac 2000
    linux 1000
    win7 1000
    linux 1000

    2)删除最后一行($表示最后一行)

    sed '$d' sed.txt

    结果为:

    mac 2000
    winxp 4000
    linux 1000
    win7 1000

    3)删除1-3行

    sed '1,3d' sed.txt

    结果为:

    win7 1000
    linux 1000

    4)嵌入正则表达式,用 /   / 包住。删除包含 win 的行

    sed '/win/d' sed.txt

    结果为:

    mac 2000
    linux 1000
    linux 1000

    3. 插入(i)

    1)所有的行之前插入 ##

    sed 'i##' sed.txt

    结果为:

    ##
    mac 2000
    ##
    winxp 4000
    ##
    linux 1000
    ##
    win7 1000
    ##
    linux 1000

    2)1-3行之前插入 0000

    sed '1,3i0000' sed.txt

    结果为:

    0000
    mac 2000
    0000
    winxp 4000
    0000
    linux 1000
    win7 1000
    linux 1000

    3)嵌入正则表达式,含有 win 的行之前插入****

    sed '/win/i*****' sed.txt

    结果为:

    mac 2000
    *****
    winxp 4000
    linux 1000
    *****
    win7 1000
    linux 1000

    4. 新增(a),跟插入类似,只不过这是在选定行之后。

    5. 替换(s)

    1) 替换 问本中 0 为 9

    sed 's/0/9/' sed.txt

    结果为:

    mac 2900
    winxp 4900
    linux 1900
    win7 1900
    linux 1900

    你会发现只替换了每行的第一个

    要把所有的都替换,可以添加参数 g

    sed 's/0/9/g' sed.txt

    结果为:

    mac 2999
    winxp 4999
    linux 1999
    win7 1999
    linux 1999

    6. 【 -n 】,一般与 p 联合使用,增加、删除、替换行的命令不需要 -n 选项

    1)列出第2行数据

    sed -n '2p' sed.txt

    结果为:

    winxp 4000

    7. 【 -i 】

    1)把源文件 sed.txt 中的所有 0 替换为 9

    sed -i 's/0/9/g' sed.txt

    命令 cat  sed.txt 打开 sed.txt 

    结果为:

    mac 2999
    winxp 4999
    linux 1999
    win7 1999
    linux 1999
  • 相关阅读:
    在阿里云服务器(ECS)上从零开始搭建nginx服务器
    HTML5和CSS3新特性一览
    【react】---手动封装一个简易版的redux
    【react】---17新增的生命周期
    vue单页面应用刷新网页后vuex的state数据丢失的解决方案
    [VUE]object.defineProperty的基本使用
    JavaScript / 本地存储
    转载--httpclient原理和应用
    关于mybatis mapper.xml中的if判断
    idea maven install时,打包找不到微服务common中公用的包
  • 原文地址:https://www.cnblogs.com/delav/p/9958809.html
Copyright © 2011-2022 走看看