zoukankan      html  css  js  c++  java
  • shell脚本学习(3)sed替换

    1 sed 替换  

    1格式:

      's/原字符串/新字符串/'   输入源    

    2正确参考:

    sed ’s/as/AS/' do.txt 

      改变字符串as为AS,不会改输入源的文件。

      匹配每行第一次匹配的位置。

     sed ’s/as/AS/' do.txt

     

             指定匹配每行第二个被匹配的数据, 用/n来指定匹配第几个

     sed ’s/as/AS/2' do.txt

     每行的第二个as变成了AS

             配合g命令,全部匹配, 设置文件中所有匹配的位置,修改完全部的as都被替换成AS了

     

    3 错误参考:

    注意尾部有/  , 试了一个上午一直没成功, 原来是少了/

    yuyuyu@ubuntu:~$sed ’s/as/AS' do.txt
    sed: -e expression #1, char 10: unterminated `s' command

    5 界定符, 一般是用/  ,但也可以用 ; : , 分号,冒号, 逗号等

    比如像把留着当目录, 符号用, 可以在‘s;;;’   s/改成s;

    sed 's;0x50;0x60;' do.txt

     

    6 配合区域保存, ()

    输入一个目录, 然后用区域存储,以及引用 1 修改这个目录的子目录

    yuyuyu@ubuntu:~$ 

    echo /home/yuyuyu/ | sed 's;(/home)/yuyuyu/;1/zhangzhang/;'

    7 sed -e命令, 执行多次匹配。

    yuyuyu@ubuntu:~$ sed 's/as/AS/2' do.txt

    8 sed -f命令, 把编辑命令放到文本里读出来执行,批量处理sed的编辑命令

    创建一个test_sed文本

    yuyuyu@ubuntu:~$ cat test_sed 
    s/as/AS/2
    s/df/DF/

     使用读取sed脚本命令:

    yuyuyu@ubuntu:~$ sed -f test_sed do.txt 

    脚本想要替换as  和df , 结果显示都替换成功了。

    9 sed -n命令,关闭修改结果, 只打印 带p的行

    测试了下, -n命令, 结果什么都没输出到result.txt

     sed -n 's/as/AS/2' <do.txt > result.txt

    如果在 尾部加入p就能够打印被修改的行了

    yuyuyu@ubuntu:~$ sed -n 's/as/AS/2p' <do.txt > result.txt

     10 sed 的指定行的用法

    sed 只对含有特定行的位置操作

    sed '/fd/ s/as/AS/' <do.txt

     

    sed 只对不含有特定行的位置操作

    sed '/fd/ !s/as/AS/' <do.txt

     

  • 相关阅读:
    I/O多路复用一些概念
    事件驱动模型
    协程-遇到I/O自动切换
    进程间共享数据Manager
    协程
    进程池
    Linux rpm 命令参数使用详解[介绍和应用]
    linux 增加用户 useradd 用法小结及配置文件说明
    java classpath批量设置shell脚本
    bat批处理设置Java JDK系统环境变量文件
  • 原文地址:https://www.cnblogs.com/mayplestory/p/11513191.html
Copyright © 2011-2022 走看看