• sed命令学习


    sed编辑器,处理文本过程如下:

    sed把当前处理的行保存在一个临时缓冲区中,然后处理缓冲区中的行,完成后把该行发送到屏幕上。sed每处理完一行就将其从临时缓冲区删除,然后下一行读入,处理和显示。处理完输入文件的最后一行后,sed便结束运行。

    sed [参数] '命令' file

    sed中模式空间(临时)和保持空间

    passwd代表文件名

    1,查询语句 

    输出第三行

     sed -n '3p' passwd

    输出第3 到5行

     sed -n '3,5p' passwd

    删除第3到5行

     sed -n '3,5d' passwd

    表示查询出passwd文件中存在sbin字符的所有行并打印出来,其中两个/表示的是其中的是正则表达式,-n和/p是该命令的参数,需要联合使用:

    sed -n ‘/sbin/p’ passwd 

    2,紧跟在s命令后的字符就是查找串和替换串之间的分隔符。分隔符默认为正斜杠,但可以改变。无论什么字符(换行符、反斜线除外),只要紧跟s命令,就成了新的串分隔符:

    head -3 passwd | sed 's#bin#Replace#g

    sed -n '1,3s' 's#bin#Replace#g' passwd

    e选项:用于sed执行多个指令,指令放置顺序对最终结果有影响

     head -5 passwd | sed -e '1,3d' -e 's/sh/Replace/g'

    r命令:当匹配到bin时,就读入文件的内容

    head -3 passwd | sed '/bin/r append.txt'

    w命令:匹配到时,写入到文件中

    sed -n '/hrwang/w me.txt' datafile

    a命令:匹配到时追加到文件中

    sed '/^hrwang/a append this line to file datafile

    q命令:q命令将导致sed程序退出,不再进行其它的处理

    sed '/hrwang/{s/hrwang/HRWANG/;q;}' datafile

    3,sed命令:没有重定向不会真正修改源文件中的内容。sed不会更改文件内容

      重定向指令为 >

      或者使用指令 -i, 直接修改文件内容,不过-i会额外添加一行,造成误解,不可用

    4,新增语句:

      sed '1a the content append to file' passwd

      sed '1i the content inset to the forward of first line' passwd

      sed '1c replace the first line of file to this content' passwd

      sed 's/false/true/' passwd # replace false in this line to true

      sed '/hello/aworld' mk ##a代表指定行后增加新行

      sed 's/hello/hello world/g' mk

      sed 's/hello/hello world/g' mk

    5 删除语句:

      sed '/postgres/d' passwd # delete the line suit this rule

      sed '2d' passwd # delete the second line

      sed '/^UUID/d' mk

      sed '/^$/d' mk

    6 替换语句:

      修改并修改文件

      sed  -i '/s/cpu_core=8/cpu_core=72/' mk 

      如果使用 ‘s/cpu_core=8/cpu_core=72/p' mk 此行后会新加一行cpu_core=72;

      如果末尾加g,说明是全局替换

      sed -i 's/westos/redhat/g' passwd

      整行替换

      sed '/hello/chello world' mk

      使用i命令向数据流插入文本行,i命令会在指定行前增加一个新行

      sed '/hello/iworld lee' mk

    7 打印文本:

      sed -n '/:/p' mk

      sed -n '/^#/p' mk

      sed -n '/^#/!p' mk

      sed -n '1~2p' mk ##打印奇数行

      sed -n '2~2p'  mk ##打印偶数行

    8 参数:

      -e 默认情况:在处理输入时。sed后面直接添加编辑命令

      当一条sed中执行多个编辑命令时,-e才有意义,且不可省略,其他无意义

      -n参数:不会把缓冲区内容输入到屏幕上,结合p指令使用,只输出匹配的行

       sed -n '/^#/p' lee_temp #输出以#开头行

       sed -n '/n$/p' lee_temp #输出以n结尾行

       sed -n 's///gp' #加g与不加g的区别是,加g意味着全行进行指令操作,不加的话,只将指令运用于第一个匹配到的位置

  • 相关阅读:
    [leetcode] Combination Sum and Combination SumII
    nginx随着passenger构造ruby on rails页
    form 为什么上传文件enctype现场
    ftk学习记录(多形式的文章)
    Android setDisplayOptions 具体的使用说明
    存储结构二叉树
    SQLSERVER存储过程语法的具体解释
    iOS多用连接、反向协议、安全
    struts2于validate要使用
    Oracle存储过程实现返回多个结果集 在构造函数方法中使用 dataset
  • 原文地址:https://www.cnblogs.com/lixiangfu/p/11207567.html
Copyright © 2020-2023  润新知