zoukankan      html  css  js  c++  java
  • sed工具

            SED是一个非交互式文本编辑器,它可对文本文件和标准输入进行编辑,标准输入可以来自键盘输入、文本重定向、字符串、变量,甚至来自于管道的文本,与VIM编辑器类似,它一次处理一行内容,Sed可以编辑一个或多个文件,简化对文件的反复操作、编写转换程序等。

            在处理文本时把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),紧接着用SED命令处理缓冲区中的内容,处理完成后把缓冲区的内容输出至屏幕或者写入文件。逐行处理直到文件末尾,然而如果打印在屏幕上,实质文件内容并没有改变,除非你使用重定向存储输出或者写入文件。

    1.其语法格式为:

    sed    [-Options]     [‘Commands’]    filename;
    sed工具默认处理文本,文本内容输出屏幕已经修改,但是文件内容其实没有修改,需要加-i参数即对文件彻底修改;

    2.参数格式为:

    x                   #x为指定行号;
    x,y                 #指定从x到y的行号范围;
    /pattern/           #查询包含模式的行;
    /pattern/pattern/   #查询包含两个模式的行;
    /pattern/,x         #从与pattern的匹配行到x号行之间的行;
    x,/pattern/         #从x号行到与pattern的匹配行之间的行;
    x,y!                #查询不包括x和y行号的行;
    r                   #从另一个文件中读文件;
    w                   #将文本写入到一个文件;
    y                   #变换字符;
    q                   #第一个模式匹配完成后退出;
    l                   #显示与八进制ASCII码等价的控制字符;
    {}                  #在定位行执行的命令组;
    p                   #打印匹配行;
    =                   #打印文件行号;
    a                  #在定位行号之后追加文本信息;
    i                  #在定位行号之前插入文本信息;
    d                   #删除定位行;
    c                  #用新文本替换定位文本;
    s                   #使用替换模式替换相应模式;
    n                   #读取下一个输入行,用下一个命令处理新的行;
    N                   #将当前读入行的下一行读取到当前的模式空间。

    3.常用SED工具企业演练案列:

    例1:替换jfedu.txt文本中old为new:

    sed    's/old/new/g'       jfedu.txt

    例2:打印jfedu.txt文本第一行至第三行:

    sed    -n '1p;$p'           jfedu.txt

    例3: 打印jfedu.txt文本中第一行与最后一行:

    sed    -n '1p;$p'           jfedu.txt

    例4: 删除jfedu.txt第一行至第三行、删除匹配行至最后一行:

    sed       '1,3d'             jfedu.txt
    sed       '/jfedu/,$d'         jfedu.txt

    例5: 删除jfedu.txt最后6行及删除最后一行:

    for   i  in `seq 1 6`;do  sed  -i   '$d'  jfedu.txt ;done
    sed       '$d'               jfedu.txt

    例6:删除jfedu.txt最后6行:

    sed       '$d'             jfedu.txt

    例7: 在jfedu.txt查找jfedu所在行,并在其下一行添加word字符,a表示在其下一行添加字符串:

    sed    '/jfedu/aword'      jfedu.txt

    例8:在jfedu.txt查找jfedu所在行,并在其上一行添加word字符,i表示在其上一行添加字符串:

    sed    '/jfedu/iword'       jfedu.txt

    例9:在jfedu.txt查找以test结尾的行尾添加字符串word,$表示结尾标识,&在Sed中表示添加:

    sed   's/test$/&word/g'     jfedu.txt

    例10:在jfedu.txt查找www的行,在其行首添加字符串word,^表示起始标识,&在Sed中表示添加:

    sed   '/www/s/^/&word/'    jfedu.txt

    例11:多个sed命令组合,使用-e参数:

    sed  -e  '/www.jd.com/s/^/&1./'  -e  's/www.jd.com$/&./g'  jfedu.txt

    例12: 多个sed命令组合,使用分号“;”分割:

    sed  -e  '/www.jd.com/s/^/&1./;s/www.jd.com$/&./g'  jfedu.txt

    例13: Sed读取系统变量,变量替换:

    WEBSITE=WWW.JFEDU.NET
    Sed  “s/www.jd.com/$WEBSITE/g” jfedu.txt

    例14:修改Selinux策略enforcing为disabled,查找/SELINUX/行,然后将其行enforcing值改成disabled、!s表示不包括SELINUX行:

    sed  -i   '/SELINUX/s/enforcing/disabled/g' /etc/selinux/config
    sed  -i   '/SELINUX/!s/enforcing/disabled/g' /etc/selinux/config

    例15:合并上下两行,也即两行合并:

    sed    'N;s/
    / /'            jfedu.txt
  • 相关阅读:
    使用 Dockerfile 定制镜像
    UVA 10298 Power Strings 字符串的幂(KMP,最小循环节)
    UVA 11090 Going in Cycle!! 环平均权值(bellman-ford,spfa,二分)
    LeetCode Best Time to Buy and Sell Stock 买卖股票的最佳时机 (DP)
    LeetCode Number of Islands 岛的数量(DFS,BFS)
    LeetCode Triangle 三角形(最短路)
    LeetCode Swap Nodes in Pairs 交换结点对(单链表)
    LeetCode Find Minimum in Rotated Sorted Array 旋转序列找最小值(二分查找)
    HDU 5312 Sequence (规律题)
    LeetCode Letter Combinations of a Phone Number 电话号码组合
  • 原文地址:https://www.cnblogs.com/deny/p/10001005.html
Copyright © 2011-2022 走看看