zoukankan      html  css  js  c++  java
  • sed速查手册

    sed速查手册

    一、替换

    pets.txt

    $cat pets.txt
    This is my cat
      my cat's name is betty
    This is my dog
      my dog's name is frank
    This is my fish
      my fish's name is george
    This is my goat
      my goat's name is adam
    

    html.txt

    $cat html.txt
    <b>This</b> is what <span style="text-decoration: underline;">I</span> meant. Understand?
    

    my.txt

    $cat my.txt
    This is my cat, my cat's name is betty
    This is my dog, my dog's name is frank
    This is my fish, my fish's name is george
    This is my goat, my goat's name is adam
    

    1.1 普通替换

    my字符替换成Hao Chen's

    sed "s/my/Hao Chen's/g" pets.txt
    

    行首追加#

    sed 's/^/#/g' pets.txt
    

    行尾追加—

    sed 's/$/---/g' pets.txt
    

    去掉html中的tags

    sed 's/<[^>]*>//g' html.txt
    

    只替换第3到第6行的文本

    sed '3,6s/my/your/g' pets.txt
    

    只替换每一行的第一个s

    sed 's/s/S/' my.txt
    

    只替换每一行的第二个s

    sed 's/s/S/2' my.txt
    

    只替换第一行的第3个以后的s

    sed '1s/s/S/3g' my.txt
    

    1.2 多个匹配

    1到3行my替换成your,3到6行This替换成That

    sed '1,3s/my/your/g; 3,$s/This/That/g' my.txt
    sed -e '1,3s/my/your/g' -e '3,$s/This/That/g' my.txt
    

    1.3 变量

    my这个单词两边加上[],即[my]

    sed 's/my/[&]/g' my.txt
    

    1.4 括号

    提取cat:betty

    sed 's#This is my ([^,]*),.*is (.*)#1:2#g' my.txt
    

    二、命令

    2.1 N命令

    把下一行的内容纳入当成缓冲区做匹配。

    两行两行的匹配

    # 把原文本中的偶数行纳入奇数行匹配,而s只匹配并替换一次
    sed 'N;s/my/your/' pets.txt
    sed 'N;s/
    /,/' pets.txt
    

    2.2 a命令和i命令

    Mac没有a命令和i命令???

    在第一行前插入

    sed '1i abc' my.txt
    

    在第一行后追加

    sed '1a def' my.txt
    

    用匹配来添加文本,在含有fish这一行后追加

    sed '/fish/a ghi' my.txt
    

    2.3 c命令

    替换匹配行

    把第2行匹配成xyz

    sed '2c xyz' my.txt
    

    2.4 d命令

    删除匹配行

    删除第二行

    sed '2d' my.txt
    

    2.5 p命令

    sed默认输出所有行(无论是否匹配)

    -n选项则取消上述默认输出

    p命令只输出匹配的行

    2.6 i命令

    将修改更新到文件

    三、高级

    3.1 address

    Mac上的sed不支持???

    对含有dog的行接下来的3行加#

    sed '/dog/,+3s/^/#/' pets.txt
    

    3.2 命令打包

    删除3到6行中包含This和fish的行

    sed '3,6{/This/{/fish/d}}' pets.txt
    

    删除包含This的行,去除每行开头的空格

    sed '{/This/d; s/^ *//}' pets.txt
    

    3.3 Hold Space & Pattern Space

    g    hold_space替换pattern_spacer
    G    hold_space追加pattern_space
    h    pattern_space替换to hold_space
    H    pattern_space追加to hold_space
    x    交换pattern_spac和hold_space的内容
    

    t.txt

    $cat t.txt
    one
    two
    three
    

    demo1

    sed 'H;g' t.txt
    

    反序一个文件的行

    sed '1!G;h;$!d' t.txt
    

    3.4 命令执行流程

    概括流程:Sed软件从文件或管道中读取一行,处理一行,输出一行;再读取一行,再处理一行,再输出一行……

    模式空间:sed软件内部的一个临时缓存,用于存放读取到的内容。

    四、参考

  • 相关阅读:
    vue中点击输入框弹出事件
    shiro
    Java转Kotlin
    RxJava2详细攻略(四)
    RxJava2详细攻略(三)
    RxJava2详细攻略(二)
    RxJava2详细攻略(一)
    DataBinding使用介绍
    类集框架
    使用CrashHandler获取应用crash信息
  • 原文地址:https://www.cnblogs.com/okokabcd/p/8448496.html
Copyright © 2011-2022 走看看