sed命令选项及作用

-n  不打印所有的行到标准输出

-e  表示将下一个字符串解析为sed编辑命令

-f  表示正在调用sed脚本文件

 sed编辑命令

p  打印匹配行

=  打印文件行号

a\  在定位行号之后追加文本信息

i\  在定位行号之前追加文本信息

d  删除定位行

c\  用新文本替换定位文本

r  从另外一个文件中读文本

w  将文本写入到一个文件

y  变换字符

q  第一个模式匹配玩成后退出

{}  在定位行执行的命令组

n  读取下一个输入行,用下一个命令处理新的行

 

接下来以下面的例子来练习sed命令

[root@git ~]# cat input
This is a Certificate Request file:

It should be mailed to zawu@seu.edu.cn

====================================================
Certificate Subject:

/O=Grid/OU=GlobusTest/OU=simpleCA-seugridl.seu.edu.cn/OU=seu.edu.cn/CN=globus
The above string is known as your user certificate subject,and it uniquely identifies this user.$88
To install this user certificate,please save this e-mail message into the following file.
/home/alloy/linuxshell/CH02/usercert.pem

<1>看一下-n的用途

[root@git ~]# sed -n '1p' input                         //加上-n选项只打印第一行
This is a Certificate Request file:
[root@git ~]# sed '1p' input                            //不加-n选项会输出第一行后再输出全文
This is a Certificate Request file:
This is a Certificate Request file:

It should be mailed to zawu@seu.edu.cn

====================================================
Certificate Subject:

/O=Grid/OU=GlobusTest/OU=simpleCA-seugridl.seu.edu.cn/OU=seu.edu.cn/CN=globus
The above string is known as your user certificate subject,and it uniquely identifies this user.$88
To install this user certificate,please save this e-mail message into the following file.
/home/alloy/linuxshell/CH02/usercert.pem

<2>我想打印出文件的3~6行

[root@git ~]# sed -n '3,6p' input
It should be mailed to zawu@seu.edu.cn

====================================================
Certificate Subject:

<3>打印匹配certificate关键字的行

[root@git ~]# sed -n '/certificate/p' input
The above string is known as your user certificate subject,and it uniquely identifies this user.$88
To install this user certificate,please save this e-mail message into the following file.

<4>打印匹配Certificate关键字的行号及内容(两种方法)

[root@git ~]# sed -n -e '/Certificate/=' -e '/Certificate/p' input
1
This is a Certificate Request file:
6
Certificate Subject:

[root@git ~]# sed -n '/Certificate/{=;p}' input
1
This is a Certificate Request file:
6
Certificate Subject:

<5>在与关键字"file:"相匹配的行后追加内容"We append a new line."

[root@git ~]# sed '/file:/a\We append a new line.' input
This is a Certificate Request file:
We append a new line.

It should be mailed to zawu@seu.edu.cn

====================================================
Certificate Subject:

/O=Grid/OU=GlobusTest/OU=simpleCA-seugridl.seu.edu.cn/OU=seu.edu.cn/CN=globus
The above string is known as your user certificate subject,and it uniquely identifies this user.$88
To install this user certificate,please save this e-mail message into the following file.
/home/alloy/linuxshell/CH02/usercert.pem

<6>匹配包含以bus结尾字符串的行

[root@git ~]# sed -n '/.*bus/p' input
/O=Grid/OU=GlobusTest/OU=simpleCA-seugridl.seu.edu.cn/OU=seu.edu.cn/CN=globus

<7>打印不在2~10之间的行

[root@git ~]# sed -n '2,10!p' input
This is a Certificate Request file:
To install this user certificate,please save this e-mail message into the following file.

/home/alloy/linuxshell/CH02/usercert.pem

<8>打印与seugrid的匹配行到最后一行的内容

[root@git ~]# sed -n '/seugrid/,$p' input
/O=Grid/OU=GlobusTest/OU=simpleCA-seugridl.seu.edu.cn/OU=seu.edu.cn/CN=globus

The above string is known as your user certificate subject,and it uniquely identifies this user.$88
To install this user certificate,please save this e-mail message into the following file.

/home/alloy/linuxshell/CH02/usercert.pem

<9>在匹配"file:"字符前插入"We insert a new line."

[root@git ~]# sed '/file:/i\We insert a new line.' input
We insert a new line.
This is a Certificate Request file:

It should be mailed to zawu@seu.edu.cn

====================================================
Certificate Subject:

/O=Grid/OU=GlobusTest/OU=simpleCA-seugridl.seu.edu.cn/OU=seu.edu.cn/CN=globus

The above string is known as your user certificate subject,and it uniquely identifies this user.$88
To install this user certificate,please save this e-mail message into the following file.

/home/alloy/linuxshell/CH02/usercert.pem

<10>把匹配"file:"的行修改为"We modify this line."

[root@git ~]# sed '/file:/c\We insert a new line.' input
We insert a new line.

It should be mailed to zawu@seu.edu.cn

====================================================
Certificate Subject:

/O=Grid/OU=GlobusTest/OU=simpleCA-seugridl.seu.edu.cn/OU=seu.edu.cn/CN=globus

The above string is known as your user certificate subject,and it uniquely identifies this user.$88
To install this user certificate,please save this e-mail message into the following file.

/home/alloy/linuxshell/CH02/usercert.pem

<11>删除文本的第一行和最后一行

[root@git ~]# sed -e '1d' -e '$d' input

It should be mailed to zawu@seu.edu.cn

====================================================
Certificate Subject:

/O=Grid/OU=GlobusTest/OU=simpleCA-seugridl.seu.edu.cn/OU=seu.edu.cn/CN=globus

The above string is known as your user certificate subject,and it uniquely identifies this user.$88
To install this user certificate,please save this e-mail message into the following file.

<12>把文本中Certificate替换成CERTIFICATE

[root@git ~]# sed -n 's/Certificate/CERTIFICATE/p' input
This is a CERTIFICATE Request file:
CERTIFICATE Subject:

<13>把文本中全部的seu替换为njue,如果只想匹配行第一个出现的seu不加g即可sed -n 's/seu/njue/p' input ,只想匹配全文第三次出现的怎么办sed -n 's/seu/njue/3p' input

[root@git ~]# sed -n 's/seu/njue/pg' input
It should be mailed to zawu@njue.edu.cn
/O=Grid/OU=GlobusTest/OU=simpleCA-njuegridl.njue.edu.cn/OU=njue.edu.cn/CN=globus

<14>将seu改为njue的结果写入output文件

[root@git ~]# sed -n 's/seu/njue/w output' input
[root@git ~]# cat output
It should be mailed to zawu@njue.edu.cn
/O=Grid/OU=GlobusTest/OU=simpleCA-njuegridl.seu.edu.cn/OU=seu.edu.cn/CN=globus

<15>在匹配“file:”行后读取output文件的内容

[root@git ~]# sed '/file:/r output' input
This is a Certificate Request file:
It should be mailed to zawu@njue.edu.cn
/O=Grid/OU=GlobusTest/OU=simpleCA-njuegridl.seu.edu.cn/OU=seu.edu.cn/CN=globus

It should be mailed to zawu@seu.edu.cn

====================================================
Certificate Subject:

/O=Grid/OU=GlobusTest/OU=simpleCA-seugridl.seu.edu.cn/OU=seu.edu.cn/CN=globus

The above string is known as your user certificate subject,and it uniquely identifies this user.$88
To install this user certificate,please save this e-mail message into the following file.

/home/alloy/linuxshell/CH02/usercert.pem

<16>将文件中f、m、j字符变为大写字母

[root@git ~]# sed 'y/ymj/YMJ/' input
This is a Certificate Request file:

It should be Mailed to zawu@seu.edu.cn

====================================================
Certificate SubJect:

/O=Grid/OU=GlobusTest/OU=siMpleCA-seugridl.seu.edu.cn/OU=seu.edu.cn/CN=globus

The above string is known as Your user certificate subJect,and it uniquelY identifies this user.$88
To install this user certificate,please save this e-Mail Message into the following file.

/hoMe/alloY/linuxshell/CH02/usercert.peM

<17>将文件中与Certificate匹配的行将全部的i替换为I,将第一个le替换为99

[root@git ~]# sed '/Certificate/{s/i/I/g;s/le/99/;}' input
ThIs Is a CertIfIcate Request fI99:

It should be mailed to zawu@seu.edu.cn

====================================================
CertIfIcate Subject:

/O=Grid/OU=GlobusTest/OU=simpleCA-seugridl.seu.edu.cn/OU=seu.edu.cn/CN=globus

The above string is known as your user certificate subject,and it uniquely identifies this user.$88
To install this user certificate,please save this e-mail message into the following file.

/home/alloy/linuxshell/CH02/usercert.pem

sed命令讲解的更多相关文章

  1. sed命令详解-应用篇

    本篇从实用的角度讲解sed,关于sed的详细帮助文档,请参考前篇 http://www.cnblogs.com/the-capricornus/p/5279979.html 本篇用到的选项请参考前篇. ...

  2. sed命令 linux

    sed 实用工具是一个"编辑器",但它与其它大多数编辑器不同.除了不面向屏幕之外,它还是非交互式的.这意味着您必须将要对数据执行的命令插入到命令行或要处 理的脚本中.当显示它时,请 ...

  3. sed命令使用详解

        内容来自马哥视频,感谢马哥精彩讲解 sed:编辑器 sed: Stream EDitor, 行编辑器,逐行进行处理 grep:实现文本过滤 awk:文本报告生成器 sed默认不编辑源文件,而是 ...

  4. 文本处理三剑客之sed命令

    第十八章.文本处理三剑客之sed命令 目录 sed介绍 sed命令常用选项 sed常用编辑命令 sed使用示例 sed高级语法 18.1.sed简介 sed全名stream editor,流编辑器,s ...

  5. linux shell 用sed命令在文本的行尾或行首添加字符

    转自 http://www.cnblogs.com/aaronwxb/archive/2011/08/19/2145364.html 昨天写一个脚本花了一天的2/3的时间,而且大部分时间都耗在了sed ...

  6. linux sed命令详解

    简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...

  7. sed命令详解

    搜索 纠正错误  添加实例 sed 功能强大的流式文本编辑器 补充说明 sed 是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时 ...

  8. Linux安全基础:sed命令的使用

    sed 是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作. Sed本质上是一个编辑器,但是它是非交互式的,这点与VIM不同:同时 ...

  9. [转]sed命令详解

    转载:http://blog.chinaunix.net/u/22677/showart_1076318.html   1.简介 sed是非交互式的编辑器.它不会修改文件,除非使用shell重定向来保 ...

随机推荐

  1. AOP面向切面编程JAVA动态代理实现用户权限管理(实现篇)

    java动态代理机制的功能十分强大,使用动态代理技术能够有效的降低应用中各个对象之间的耦合紧密程度,提高开发的效率以及程序的可维护性,事实上Spring AOP就是建立在Java动态代理的基础之上.其 ...

  2. git pull提交代码遇到的问题

    git pull 提示如下错误 解决方法: git pull 后面加上分支具体地址  比如:git pull origin daily/1.0.0 同样git push origin daily/1. ...

  3. 小程序中input设置宽度后宽度还有空间,但是placeholder被遮挡问题

    最近在做小程序,已经设置了宽高,placeholder没有超出input宽度,却被挡住了一部分,上代码看一下: wxml: <view class='container'> <inp ...

  4. participation remain wide

    Equal access to universities stagnates Image copyright Getty Images The most advantaged teens have t ...

  5. 移动端click事件无反应或反应慢 touchend事件页面滑动时频繁触发

    H5页面的点击事件click 无论在浏览器 iframe还是小程序里面 都会出现点击无反应或者反应慢的情况出现 所以决定用touchend事件来代替click 但是touchend事件触发比较灵敏 在 ...

  6. ACE + TAO工程中的Messenger启动过程

    1.启动NameService服务 F:\ACESource\ACE_wrappers\TAO\orbsvcs\Naming_Service>tao_cosnaming.exe -o F:\AC ...

  7. Python第二章(北理国家精品课 嵩天等)

    一.深入理解Python语言 语法简洁 >13万第三方库 二.Python蟒蛇绘制 #PythonDraw.py import turtle turtle.setup(650,350,200,2 ...

  8. python学习-序列基本知识

    序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. 用到的主要序列有元组和列表. 先定义一个列表 names=[&q ...

  9. PAT—优化Java从控制台读取信息的速度

    PAT对Scanner类很不友好,会花费大量时间,导致运行时间超时.可采用下列代码优化时间 BufferedReader bf = new BufferedReader(new InputStream ...

  10. CCF CSP 201803-3 URL映射

    转载自 https://blog.csdn.net/tigerisland45/article/details/81697594 /* CCF201803-3 URL映射 */ #include &l ...