sed命令 文件 编辑 本文索引 [隐藏] sed的选项、命令、替换标记 选项 参数 sed命令 sed替换标记 sed元字符集 sed用法实例 替换操作:s命令 全面替换标记g 定界符 删除操作:d命令 已匹配字符串标记& 子串匹配标记\1 组合多个表达式 引用 选定行的范围:,(逗号) 多点编辑:e命令 从文件读入:r命令 写入文件:w命令 追加(行下):a\命令 插入(行上):i\命令 下一个:n命令 变形:y命令 退出:q命令 保持和获取:h命令和G命令 保持和互换:h命令和x命令 脚本scriptfile 打印奇数行或偶数行 打印匹配字符串的下一行 sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模 式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。 sed的选项、命令、替换标记 命令格式 sed [options] 'command' file(s) sed [options] -f scriptfile file(s) 选项 -e
sed命令 文件编辑 本文索引 [隐藏] sed的选项、命令、替换标记 选项 参数 sed命令 sed替换标记 sed元字符集 sed用法实例 替换操作:s命令 全面替换标记g 定界符 删除操作:d命令 已匹配字符串标记& 子串匹配标记\1 组合多个表达式 引用 选定行的范围:,(逗号) 多点编辑:e命令 从文件读入:r命令 写入文件:w命令 追加(行下):a\命令 插入(行上):i\命令 下一个:n命令 变形:y命令 退出:q命令 保持和获取:h命令和G命令 保持和互换:h命令和x命令 脚本scriptfile 打印奇数行或偶数行 打印匹配字符串的下一行 sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模 式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。 sed的选项、命令、替换标记 命令格式 sed [options] 'command' file(s) sed [options] -f scriptfile file(s) 选项 -e

简介

sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

sed的处理流程,简化后是这样的:

1.读入新的一行内容到缓存空间;

2.从指定的操作指令中取出第一条指令,判断是否匹配pattern;

3.如果不匹配,则忽略后续的编辑命令,回到第2步继续取出下一条指令;

4.如果匹配,则针对缓存的行执行后续的编辑命令;完成后,回到第2步继续取出下一条指令;

5.当所有指令都应用之后,输出缓存行的内容;回到第1步继续读入下一行内容;

6.当所有行都处理完之后,结束;

具体流程见下图:

[root@www ~]# sed [-nefr] [动作]
选项与参数:
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令列模式上进行 sed 的动作编辑;
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-i :直接修改读取的文件内容,而不是输出到终端。

动作说明: [n1[,n2]]function
n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在 10 到 20 行之间进行的,则『 10,20[动作行为] 』

function:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

sed删除整行

删除2-4行的代码,d删除
sweet@sweet-virtual-machine:~/work$ nl a1.txt | sed '2,4d'
1 hello
5 nihao
6 nihao
7 nihao
从第三行删除最后一行
sweet@sweet-virtual-machine:~/work$ nl a1.txt
1 hello
2 hello
3 world
4 nihao
5 nihao
6 nihao
7 nihao
sweet@sweet-virtual-machine:~/work$ nl a1.txt | sed '3,$d'
1 hello
2 hello

sed在指定行后添加一行(a新增)

在第一行后新增一行‘I LOVE YOU’,代码如下:

sweet@sweet-virtual-machine:~/work$ nl a1.txt | sed '1a I LOVE YOU'
hello
I LOVE YOU
hello
world
nihao
nihao
nihao
nihao

增加多行代码,需在行末加上‘\’

sweet@sweet-virtual-machine:~/work$ nl a1.txt | sed '2a I LOVE\
> YOU'
hello
hello
I LOVE
YOU
world
nihao
nihao
nihao
nihao

sed在指定行前添加一行(i插入)

a\ 在当前行下面插入文本。 i\ 在当前行上面插入文本。 c\ 把选定的行改为新的文本。 d 删除,删除选择的行。 D 删除模板块的第一行。 s 替换指定字符 h 拷贝模板块的内容到内存中的缓冲区。 H 追加模板块的内容到内存中的缓冲区。 g 获得内存缓冲区的内容,并替代当前模板块中的文本。 G 获得内存缓冲区的内容,并追加到当前模板块文本的后面。 l 列表不能打印字符的清单。 n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。 N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。 p 打印模板块的行。 P(大写) 打印模板块的第一行。 q 退出Sed。 b lable 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。 r file 从file中读行。 t label if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。 T label 错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。 w file 写并追加模板块到file末尾。 W file 写并追加模板块的第一行到file末尾。 ! 表示后面的命令对所有没有被选定的行发生作用。 = 打印当前行号码。 # 把注释扩展到下一个换行符以前。

来自: http://man.linuxde.net/sed

在第一行前插入一行‘I LOVE YOU’,代码如下:

sweet@sweet-virtual-machine:~/work$ nl a1.txt | sed '1i I LOVE YOU'
I LOVE YOU
hello
hello
world
nihao
nihao
nihao
nihao

sed以行为单位的替换与显示(c替换)

替换2-5的数据为‘this is 2-5 number’

sweet@sweet-virtual-machine:~/work$ nl a1.txt | sed '2,5c this is 2-5 number'
hello
this is - number
nihao
nihao

sed只打印出符合条件的内容

打印2-5的内容(-n:只有经过sed 特殊处理的那一行(或者动作)才会被列出来。p:打印)

sweet@sweet-virtual-machine:~/work$ nl a1.txt | sed -n '2,5p'
hello
world
nihao
nihao

数据的搜寻并执行命令

在a.txt文件中搜索'hello',代码如下:

搜索并显示数据

sweet@sweet-virtual-machine:~/work$ sed -n '/hello/p' a1.txt
hello
hello

搜索并删除数据

sweet@sweet-virtual-machine:~/work$ sed '/hello/d' a1.txt
world
nihao
nihao
nihao
nihao

多命令操作(用{}括起来,命令之间用;隔开)

在a1.txt中查找hello的行,并把world替换为blueshell(s:取代),代码如下:

sweet@sweet-virtual-machine:~/work$ nl a1.txt | sed -n '/hello/{s/world/blueshell/;p}'
helloblueshell
hello

多点编辑(-e)

删除a1.txt第4行到最后一行的内容,并把world替换为blueshell

sweet@sweet-virtual-machine:~/work$ nl a1.txt | sed -e '3,$d' -e 's/world/blueshell/'
helloblueshell
hello

直接修改文件内容(危险动作)

把a1.txt中行末的.替换为!(g:获得内容缓冲区的内容,并替换为当前模板的文本内容)

sweet@sweet-virtual-machine:~/work$ sed -i 's/\.$/\!/g' a1.txt
sweet@sweet-virtual-machine:~/work$ cat a1.txt
helloworld!
hello!
world!
nihao!
nihao!
nihao!
nihao

在最后一行的末尾加上‘done’

sweet@sweet-virtual-machine:~/work$ cat a1.txt
helloworld!
hello!
world!
nihao!
nihao!
nihao!
nihao
done

由於 $ 代表的是最后一行,而 a 的动作是新增,因此该文件最后新增『done』!

sed命令 文件 编辑 本文索引 [隐藏] sed的选项、命令、替换标记 选项 参数 sed命令 sed替换标记 sed元字符集 sed用法实例 替换操作:s命令 全面替换标记g 定界符 删除操作:d命令 已匹配字符串标记& 子串匹配标记\1 组合多个表达式 引用 选定行的范围:,(逗号) 多点编辑:e命令 从文件读入:r命令 写入文件:w命令 追加(行下):a\命令 插入(行上):i\命令 下一个:n命令 变形:y命令 退出:q命令 保持和获取:h命令和G命令 保持和互换:h命令和x命令 脚本scriptfile 打印奇数行或偶数行 打印匹配字符串的下一行 sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模 式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。 sed的选项、命令、替换标记 命令格式 sed [options] 'command' file(s) sed [options] -f scriptfile file(s) 选项 -e
sed命令 文件 编辑 本文索引 [隐藏] sed的选项、命令、替换标记 选项 参数 sed命令 sed替换标记 sed元字符集 sed用法实例 替换操作:s命令 全面替换标记g 定界符 删除操作:d命令 已匹配字符串标记& 子串匹配标记\1 组合多个表达式 引用 选定行的范围:,(逗号) 多点编辑:e命令 从文件读入:r命令 写入文件:w命令 追加(行下):a\命令 插入(行上):i\命令 下一个:n命令 变形:y命令 退出:q命令 保持和获取:h命令和G命令 保持和互换:h命令和x命令 脚本scriptfile 打印奇数行或偶数行 打印匹配字符串的下一行 sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模 式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。 sed的选项、命令、替换标记 命令格式 sed [options] 'command' file(s) sed [options] -f scriptfile file(s) 选项 -e

Linux三剑客之老二-------sed命令详解的更多相关文章

  1. linux每天一小步---sed命令详解

    1 命令功能 sed是一个相当强大的文件处理编辑工具,sed用来替换,删除,更新文件中的内容.sed以文本行为单位进行处理,一次处理一行内容.首先sed吧当前处理的行存储在临时的缓冲区中(称为模式空间 ...

  2. 转 linux之sed命令详解

    http://jingyan.baidu.com/article/fec4bce2228f60f2618d8bb0.html sed  编辑裁剪文件命令 sed -i "s/\/db\/te ...

  3. Linux学习之sed命令详解

    概述 sed是stream editor的简称,也就是流编辑器.它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区 ...

  4. 【转】【Linux】sed命令详解

    sed命令详解 sed是stream editor的简称,也就是流编辑器.它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令 ...

  5. Linux shell sed 命令详解

    详细的sed命令详解,请参考https://my.oschina.net/u/3908182/blog/1921761 sed命令常见用途 查找关键词做全局替换 查找某行的关键词做替换 查找关键字所在 ...

  6. sed命令详解 vim高级技巧 shell编程上

    第1章 sed命令详解 1.1 查找固定的某一行 1.1.1 awk命令方法 [root@znix ~]# awk '!/oldboy/' person.txt 102,zhangyao,CTO 10 ...

  7. (转)Linux内核参数设置sysctl命令详解

    Linux内核参数设置sysctl命令详解 原文:https://www.zhukun.net/archives/8064 sysctl是一个允许您改变正在运行中的Linux系统的接口. 它包含一些 ...

  8. LINUX的磁盘管理du命令详解

    LINUX的磁盘管理du命令详解 du(disk usage)命令可以计算文件或目录所占的磁盘空间.没有指定任何选项时, 它会测量当前工作目录与其所有子目录,分别显示各个目录所占的快数,最后才显示工作 ...

  9. linux sort,uniq,cut,wc命令详解

    linux sort,uniq,cut,wc命令详解 sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些 ...

随机推荐

  1. 由于删除DBF文件报错 —— ORA-01033: ORACLE initialization or shutdown in progress

    由于移动或删除DBF文件报错:ORA-01033: ORACLE initialization or shutdown in progress   原因:一般该类故障通常是由于移动文件而影响了数据库日 ...

  2. python机器学习-逻辑回归

    1.逻辑函数 假设数据集有n个独立的特征,x1到xn为样本的n个特征.常规的回归算法的目标是拟合出一个多项式函数,使得预测值与真实值的误差最小: 而我们希望这样的f(x)能够具有很好的逻辑判断性质,最 ...

  3. asp.net+mvc+easyui+sqlite 简单用户系统学习之旅(四)—— session传递登录人信息显示+用户注销

    前面的学习,已经做好了简单的登录和主页,涉及了三层软件架构,mvc,easyui的layout.tree.tab.window,sqlite,动软代码自动生成. 下面完善一下登录跳转主页后,在sout ...

  4. php中在局部作用域内访问全局变量

    php中,由于作用域的限制,导致变量的访问限制: 1.局部作用域内不能访问全局变量 2.全局作用域内不能访问局部变量 对于第一种情况,如下代码将不能正常运行: <?php //局部作用域(函数内 ...

  5. 转FTP协议详解

    转自:http://www.cnblogs.com/li0803/archive/2010/11/16/1878833.html FTP 是File Transfer Protocol(文件传输协议) ...

  6. nginx location 或操作

    location ~* (\.(7z|bat|bak|ini|log|rar|sql|swp|tar|zip|gz|git|asp|svn)|/phpmyadmin) { deny all; }

  7. 自己动手制作更好用的markdown编辑器-01

    这里文章都是从个人的github博客直接复制过来的,排版可能有点乱. 原始地址  http://benq.im   文章目录 1. 简介 2. 项目结构 3. 程序主界面 4. 拖动窗口 5. app ...

  8. opengl剪裁空间和视口空间中不遵从右手定则,而是遵从左手定则

    opengl剪裁空间和视口空间中不遵从右手定则,而是遵从左手定则. 比如说要在视口空间判断一个三角形是否是正面朝向用户,就需要用左手定则而非右手定则.

  9. 每天进步一点点——Linux中的文件描写叙述符与打开文件之间的关系

    转载请说明出处:http://blog.csdn.net/cywosp/article/details/38965239 1. 概述     在Linux系统中一切皆能够看成是文件,文件又可分为:普通 ...

  10. MySQL:系列合集

    MySQL一:初识数据库 MySQL二:库操作 MySQL三:存储引擎 MySQL四:表操作 MySQL五:数据操作 MySQL六:索引原理与慢查询优化 MySQL七:数据备份 MySQL八:视图.触 ...