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. SVN学习(二)——SVN 提交、更新、解决冲突等操作步骤

    1. 纳入版本控制 ①新建文件abc.txt ②在文件上点右键 ③添加后文件图标发生变化 2. 提交 ①使用TortoiseSVN可以提交具体某一个文件,或某一个目录下的所有改变.方法就是在想要提交的 ...

  2. vs2015+opencv-3.2.0-vc14配置

    用的VS2015免费的community社区版,功能足矣. 很早就有配置opencv249,原本觉得低版本的稳定,一直没有配成功过,测试总是报错 出现error LINK:无法打开文件“opencv_ ...

  3. Android Volley框架的几种post提交请求方式

    首先简单描述一下Google的Android开发团队在2013年推出的一个网络通信框架Volley.它的设计目标是进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如下载文件等,Vol ...

  4. 联想电脑Win8升级win10后Wlan关闭无法开启解决办法

    官网下载电源驱动,下载无线网上驱动 开启电脑 按fn+f5 电源管理界面就出来了 把无线网卡打开 就ok了 这样就开启了无线! 如果还不行,可进行如下尝试,希望有所帮助: 1.开机进bios(一般是按 ...

  5. Linux 中 eclipse 的tomcat端口号被占用

    1.打开ubuntu启动器(快捷键是 win)--键入 sys--找到 系统监视器(System Monitor) 2.打开系统监视器--找到进程中的java 这个进程--结束该进程

  6. C语言基础(17)-作用域

    一个C语言变量的作用域可以是代码块 作用域,函数作用域或者文件作用域. 不推荐写法 int a; // 出现了语法的二义性,可能是声明也可能是定义,所以最好定义完成之后声明 void func();  ...

  7. (html)前端如何验证token的合法性来判断用户是否登录?

    问题: (html)前端如何验证token的合法性来判断用户是否登录?描述: 1.我使用了JWT的方式,后端生成了一个token,将其返回给前端,前端获取到后每次请求接口都附带上这个token,后端来 ...

  8. Redis入门经典——The Little Redis Book (翻译)

    The Little Redis Book By Karl Seguin 关于本书:本书全然免费下载.你能够任意转载,复制.但请你注明作者.Karl Seguin.译者,WY. 以及不要用于商业用途. ...

  9. Oracle----Oracle 11g XE release2安装与指导

    今天上午我安装了Oracle 11g企业版,发现太占内存了,考虑到MS SQL有express版本,所以寻思着尝试尝试Oracle 11g的express版本,就是EX版本.下面是具体的安装步骤. 1 ...

  10. Android Studio--NDK编译C代码为.so文件,JNI调用

    前言: 从Android Studio开始,就支持jni和.so库调用了. 环境: Windows 7+Android Studio2.1.2+NDK版本:android-ndk-r10e 准备工作: ...