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  `;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/\n/ /'            jfedu.txt

sed工具的更多相关文章

  1. sed 工具简介

    sed 工具简介sed 可以分析 Standard Input (STDIN) 的数据, 然后将数据经过处理后,再将他输出到 standrad out (STDOUT) 的一个工具. 至于处理呢?可以 ...

  2. shell脚本 sed工具

    sed工具概述(流式编辑器)非交互,基于模式匹配过滤及修改文本逐行处理,并将结果输出到屏幕可实现对文本的输出,增,删,改,查等各种操作 sed流控制:!:取反操作,根据定址条件取反n:读下一行,产生隔 ...

  3. Linux文件格式化与相关处理及sed工具

    http://blog.csdn.net/pipisorry/article/details/52564957 geditor, sed, ed, awk, Emacs 文本处理工具 [Linux S ...

  4. linux学习——sed工具

    命令格式: sed [-nefr] [动作] 1.sed可以分析标准输入(STDIN)的数据,然后将数据处理后,再将他输出到标准输出(STDOUT),他有替换.删除.新增.选定特定行等处理功能.sed ...

  5. sed工具的基本用法

    sed文本处理工具的用法: 用法1:前置命令 | sed [选项] '条件指令' 用法2:sed [选项] '条件指令' 文件.. .. 认识sed工具的基本选项 sed命令的常用选项如下: -n(屏 ...

  6. Linux sed工具的使用

    基础知识 - 行编辑工具: 一行一行处理文件内容 - 全屏编辑工具:一次性将文件所有内容加载到内存中 sed编辑器: Stream Editor 工作原理: 逐行处理文件内容,一次读取一行内容到模式空 ...

  7. Linux centos7 sed工具介绍

    一.sed上 grep工具功能只能实现查找,不能把查找的内容替换. sed本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行查找.删除.替换字符或字符串.调换字符串位置.直接修改文件内容等 ...

  8. 通过shell命令编辑xml文件--sed工具

    1.修改如下xml文件的value值:

  9. sed工具使用

    sed命令使用形式 1.sed命令从管道中读取数据处理 command | sed ' edit command' 通过管道把一个命令的标准输出读入到sed的标准输入,sed就起到了过滤作用 2.se ...

随机推荐

  1. JavaScript--开关思想

    就是男默女泪的立flag! <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  2. zabbix监控docker容器

    1.环境说明 由于最近zabbix进行过一次迁移,所以zabbix-server系列采用docker方式安装,参考zabbix官网:https://github.com/zabbix/zabbix-d ...

  3. 【7.18总结】KM算法

    先贴代码,参考博客来源于:https://blog.csdn.net/zyy173533832/article/details/11519291#commentBox 例题:HDU 2255 题意:n ...

  4. windows和linux下读取文件乱码的终极解决办法!

    乱码是个很恶心的问题. windows和linux读取txt文件,一旦读取了,编码发生改变,就无法再还原了,只有重启项目. 网上有很多方法都是读取文件头,方法很好,但是亲测都不能用(右移8位判断0xf ...

  5. UIView 判断是否visible

    if(self.view == [(MyAppDelegate *)[[UIApplication sharedApplication] delegate].window.subviews objec ...

  6. 巨蟒python全栈开发-第11阶段 ansible3_1入门四个模块command&shell&script&copy

    大纲 1.系统安装与机器克隆 2.ansible介绍和host-pattern格式 3.command模块 4.shell模块 5.script模块 6.copy模块

  7. 查看JAVA占用CPU高的线程日志

    # . 查看主进程占用cpu高 top # java # . 按照线程占用cpu由高到低进行排查: -o THREAD,tid, # USER %CPU PRI SCNT WCHAN USER SYS ...

  8. 转载:ubuntu 下的dpkg 的用法

    dpkg是一个Debian的一个命令行工具,它可以用来安装.删除.构建和管理Debian的软件包. 下面是它的一些命令解释: 1)安装软件 命令行:dpkg -i <.deb file name ...

  9. @loj - 2434@ 「ZJOI2018」历史

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 九条可怜是一个热爱阅读的女孩子. 这段时间,她看了一本非常有趣的 ...

  10. 洛谷P5664 Emiya 家今天的饭 问题分析

    首先来看一道我编的题: 安娜写宋词 题目背景 洛谷P5664 Emiya 家今天的饭[民间数据] 的简化版本. 题目描述 安娜准备去参加宋词大赛,她一共掌握 \(n\) 个 词牌名 ,并且她的宋词总共 ...