zoukankan      html  css  js  c++  java
  • shell编程 sed详解

    1,作用和工作原理:

    作用:处理文件内容(增删改查),学了sed之后可以对较大的文件或者大批量的文件进行高效率的处理。

    工作原理:sed读取一行,首先将这行放入缓存,然后才对这行进行处理,处理完后,将缓存区的内容发送到终端,其中sed对应的缓存区空间称为:模式空间。

    2,格式:

    sed [选项] [sed命令] [输入文件]

    注意事项:

    1,他们之间都有空格,每个元素至少一个空格

    2,sed命令是sed软件的内置命令选项(称为sed命令选项是为了和前面的选项区分),它可以是单个也可以是多个sed命令的组合 (后面我们可以学到用-e选项可以实现组合)

    3,sed命令两边用'' sed命令前是限制条件。

    3,选项说明

    选项 解释说明(带*的为重点)
     -n 取消默认的sed软件的输出,常与sed命令的P连用*
    -e

    一行命令语句可以执行多条sed命令   *

    -r ruguler 使用扩展正则表达式,默认情况sed只识别基本正则表达式  *
    -i  inside

    直接修改文件内容,而不是输出到终端,如果不使用-i选项sed软件只是修改在内存中的数据,并不会影响磁盘上的文件*

    所以seq命令,不使用-i的话,默认不会修改文件内容

    sed命令 解释说明(带*的为重点)
    a  append 追加,在指定行后再追加一行或多行文本*
    i    insert 插入,在指定行前再插入一行或多行文本*
    c   chenge 取代,取代指定行
    d  delete 删除指定的行
    p  print 打印模式空间内容,通常p会与选项-n一起使用*
    特殊符号 解释说明
    ! 就像一个sed命令,放在限制条件后面 对指定行以外的所有行应用命令

    例子:

    a:sed '2a cjk' nidaye

    i:sed '3i cjk' nidaye

    补充:同时增加多行用

    sed '2a nimei imei imei' test

    匹配的的行:删除以root开头的行   #sed '/^root/d' test

    指定的行:删除2到5行以外的行sed '2,5d' test

    取反:sed '2,5!d' test

    改(替换)

    例子:将5到9行内容替换为 cjk

    sed '5,9c cjk'  test 

    补充文本替换

    文本替换

    1,选项

    这里用到的sed命令,选项:
    “s”:单独使用-->将每一行中第一处匹配的字符串进行替换==>sed命令
    “g”:每一行进行全部替换-->sed命令s的替换标志之一(全局替换),非sed命令。
    “-i”:修改文件内容-->sed软件的选项,注意和sed命令i区别。

    2,格式

    sed  -i  ' s/目标内容/替换内容/g'  filename

    例子:

    将/etc/passwd 中的root 改成ken

    sed -i 's/root/ken/g' /etc/passwd

    补充

    sed -i '1s/root/ken/g' /etc/passwd

    查找指定的字符串

    打印指定行,第4行。

    sed  -n '4p'  test

    例子,显示/etc/passwd中包含root的行(显示(打印)模式空间中的内容)

    方法1 sed  -n '/root/p ' /etc/passwd

    补充:-e多点操作

    例子:去掉文件中的注释行和空白行

    sed -e '/^#/d' -e '/^$/d'  /etc/passwd

  • 相关阅读:
    ASP.NET备份还原数据库
    ASP.NET的运行原理与运行机制
    Asp.net WebPages框架运行原理浅析(转)
    不要盲目选择定时器
    C# 如何用计时器Timer控件实现停留几秒再做切换窗体的操作
    使用System.Timers.Timer类实现程序定时执行
    C#启动一个外部程序(1)-WinExec
    几种类型的db,以及最新的db排名,看一下
    SharePoint 2013 讨论板列表"Connect to Outlook" 不可用解决方案
    Java可视化编程,基于布局管理器的UI设计
  • 原文地址:https://www.cnblogs.com/lichenghong/p/10418413.html
Copyright © 2011-2022 走看看