sed n/N使用说明
sed的语法格式:
sed [option] {sed-command} {input-file}
sed在正常情况下,将处理的行读入模式空间(pattern space),脚本中的“sed-command(sed命令)”就一条接着一条进行处理,知道脚本执行完毕。然后该行呗输出,模式(pattern space)被清空;接着,在重复执行刚才的动作,文件中的新的一行被读入,直到文件处理完毕。
但是,由于种种原因,如用户希望在某个条件下,脚本中的某个命令被执行或希望模式空间(pattern space)保留,以便下一次使用,这都有可能使sed在处理文件的时候,不按照正常的流程来进行处理,这时候就需要用sed高级命令来满足需求。
先来说说命令n和命令N
命令n:读取下一行到pattern space。由于pattern space中有按照正常流程读取的内容,使用n命令后,pattern space中又有了一行,此时,pattern space中有2行内容,但是先读取的那一行不会被取代、覆盖或删除;当n命令后,还有其他命令p的时候,此时打印出的结果是n命令读取的那一行的内容。
看下图,你就明白了。
新建文件,其内容如下
cat 1.txt
1
2
正常sed流程
使用n命令后,
N命令:将下一行添加到pattern space中。将当前读入行和用N命令添加的下一行看成“一行”。
新建文件1.txt
cat 1.txt
1
2
正常sed流程
使用N命令后
=========================================================
2、sed选项
-n 使用安静模式.则只有经过sed特殊处理的哪一行才会被列出来
-e 传送带(前面执行完传递给后面)
-f 跟随脚本文件名
-r 脱意
-i 直接修改读取文件
3、sed命令详解
a 新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c 取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d 删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i 插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p 列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
s 取代,通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g
n 读取下一个输入行, 用下一个命令处理新的行
4、以下是替换标记
g 表示行内全面替换
p 表示打印行
w 表示把行写入一个文件
x 表示互换模快板中的文本和缓冲区中的文本
y 表示把一个字符翻译为另外的字符(不用于正则表达式)
5、元字符集,匹配符
^ 锚定行的开始. 如/^sed/ 匹配所有以sed开头的行
$ 锚定行的结束. 如/sed$/ 匹配所有以sed结尾的行
. 匹配一个非换行符. 如/*sed/ 匹配s后接一个任意字符然后是d
* 匹配零或多个字符. 如/*sed/ 匹配所有模块是一个或多个空格后紧跟sed的行
[] 匹配一个制定范围内的字符如. /[Ss]ed/ 匹配sed和Sed
[^] 匹配一个不在制定范围内的字符. 如/[^A-RT-Z]ed/ 匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行
\(..\) 保存匹配的字符. 如s/\(love\)able/\1rs loveable被替换成lovers
& 保存搜索字符用来替换其它字符. 如s/love/**&**/ love这成**love**
\< 锚定单词的开始. 如/\\> 锚定单词的结束. 如/love\>匹配包含以love结尾的单词行
x\{m\} 重复字符x,m次. 如/o\{5\}匹配包含5个o的行
x\{m,\} 重复字符x,至少m次. 如 /o\{5,}/匹配至少有5个o的行
x\{m,n\} 重复字符x,至少m次.把多余n次. 如 /o\{5,10\}/匹配5-10个o的行
6、sed中查找模式匹配
. 单字通配符
[0-9] 匹配0-9
[^a-z] 不匹配a-z的所有其它字符
“.*” 匹配””内任何字符串
^ 匹配行开始
$ 匹配行结束
7、例子
删除: dd命令
sed ‘2d’ file 删除file文件的第2行
sed ‘2,$d’ file 删除file文件的第2行到末尾所有行
sed ‘$d’ file 删除file文件的最后一行
sed ‘/test/’d file 删除file文件所有包含test的行
sed d file 删除file文件中的所有行
sed 2,5d file 删除file中的2-5行
sed /abc/d file 删除file中包含字符串abc所有的行
替换: s命令
sed ‘s/test/mytest/g’ file 在整行范围内把test替换为mytest. 如果没有g标记,则只有每行第一个匹配的test被替换成mytest
sed -n ‘s/^test/mytest/p’ file -n选项和p标志一起使用表示只打印那些发生替换的行, 如果某一行开头的test被替换成mytest,就打印它
sed ‘s/^192.168.1.1/&localhost’ file &符号表示替换字符串中被找到的部分. 所有以192.168.1.1开头的行都会被替换成它自己加localhost,变成192.168.1.1localhost
sed -n ‘s/\(love\)able/\1rs/p’ file love被标记为1,所有loveable会被替换成lovers,而且替换的行会被打印出来
sed ‘s#10#100#g’ file 不论什么字符,紧跟着s的命令都被认为是最新的分隔符,所以,’#’在这里是分隔符,代替了默认的”/”分隔符. 表示把所有10替换成100
选定行的范围: 逗号
sed -n ‘/test/,/check/p’ file 所有在模块test和check所确定范围内的行都被打印
sed -n ‘5,/^test/p’ file 打印从第5行开始到第一个包含以test开始行之间的所有行
sed ‘/test/,/check/s/$/sed test/’ file 对于模块test和west之间的行,每行的末尾用字符串sed test替换
多点编辑: e命令
sed -e ‘1,5d’ -e ‘s/test/check/’ file -e选项允许在同一行里执行多条命令.删除1-5行,check替换test
sed -e ‘/and/s/aaa/bbb’ file sed中用bbb替换同一行中包括字符串and的字符串aaa,而不是每一行中的字符串aaa
读入文件: r命令
sed ‘/test/r file_a’ file file_a里的内容被读进来,显示在与test匹配的行后面. 如果匹配多行,则file_a内容将显示在所有匹配行的下面
写入文件: w命令
sed -n ‘test/w file_a’ file file中所包含的test行都被写入file里
插入: i命令
sed ‘/test/i\\ new line’ file 如果test被匹配, 则把反斜杠后面的文本插入到匹配行的上面
sed -e ‘1 ia’ -e ‘$ a3′ file 在第一行上面插入a,在末尾行下面插入3
下一个: n命令
sed ‘/test/{n; s/aa/bb/;}; file 如果test被匹配, 则移动到匹配行的下一行,替换这一行的aa变为bb, 并打印该行,然后继续
sed n/N使用说明的更多相关文章
- sed初理多行合并+sed之G、H、g、h使用+sed n/N使用说明
转载:[shell]sed处理多行合并 - seyjs - 博客园 (cnblogs.com) 文件格式 table=t1 name owner address table=t2 id text co ...
- 【转】sed单行命令大全
文本间隔: # 在每一行后面增加一空行 sed G # 将原来的所有空行删除并在每一行后面增加一空行. # 这样在输出的文本中每一行后面将有且只有一空行. sed '/^$/d;G' # 在每 ...
- SED单行脚本快速参考(Unix 流编辑器)(转)
sed.sourceforge.net被封杀,特在此处贴上官方的sed 使用说明文档 SED单行脚本快速参考(Unix 流编辑器) 2005年12月29日 英文标题:USEFUL ONE-LINE S ...
- SED单行脚本快速参考(Unix 流编辑器)
------------------------------------------------------------------------- SED单行脚本快速参考(Unix 流编辑器) 200 ...
- sed用法详解
转载自: SED单行脚本快速参考(Unix 流编辑器) 如侵犯您的版权,请联系:Windeal12@qq.com ------------------------------------------- ...
- awk sed grep 常用命令
文本间隔 在每一行后面增加一空行: sed G sed G v1 >v2 在每一行后面增加两行空行: sed 'G;G' 将第一个脚本所产生的所有空行删除(即删除所有偶数行): sed 'n;d ...
- awk使用说明
原文地址:http://www.cnblogs.com/verrion/p/awk_usage.html Awk使用说明 运维必须掌握的三剑客工具:grep(文件内容过滤器),sed(数据流处理器), ...
- 三剑客之SED
Sed功能说明 Sed是Strem Editor(流编辑器)缩写,是操作.过滤和转换文本内容的强大工具.常用功能有增删改查,过滤,取行. [root@old ~]# sed --versio ...
- Linux实战教学笔记12:linux三剑客之sed命令精讲
第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...
随机推荐
- C语言指针加1问题以及字节对齐问题
今天早上自己写了一段代码,然后测试的时候发现结果总是和预期的不一样,而且偏差的有点离谱,冥思苦想了将近五个小时,最后在我要开始怀疑人生的时候,发现原来是自己犯了一个极其低级但又容易被忽略的问题.好吧, ...
- SQL用例集锦
SQL 语句分类 DDL - 数据定义语句 (CREATE,ALTER,DROP,DECLARE) DML - 数据操纵语句 (SELECT,DELETE,UPDATE,INSERT) DCL - 数 ...
- 高性能WEB开发:深入理解页面呈现、重绘、回流
在讨论页面重绘.回流之前.需要对页面的呈现流程有些了解,页面是怎么把html结合css等显示到浏览器上的,下面的流程图显示了浏览器对页面的呈现的处理流程.可能不同的浏览器略微会有些不同.但基本上都是类 ...
- Android -- Service的开启关闭与生命周期
Service是Android 系统中的四大组件之一,是在一段不定的时间运行在后台,不和用户交互应用组件. service可以在很多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity ...
- Python 高级图像处理
构建图像搜索引擎并不是一件容易的任务.这里有几个概念.工具.想法和技术需要实现.主要的图像处理概念之一是逆图像查询(RIQ).Google.Cloudera.Sumo Logic 和 Birst 等公 ...
- T-SQL with关键字
T-SQL with关键字 Select字句在逻辑上是SQL语句最后进行处理的最后一步,所以,以下查询会发生错误: SELECT YEAR(OrderDate) AS OrderYear, COU ...
- 反编译示例:mxd检查
gisoralce在博客园发布了一个mxd检查工具,主要功能是将arcgis的mxd数据源有效性(含矢量和影像)检查.检查是否为相对路径,自动保存为相对路径. 这是一个未加壳的.NET程序,正好拿来练 ...
- vue - 制作模板
1. 选项模板 2. template模板 3. script标签模板 <!-- 选项模板 --> <!DOCTYPE html> <html lang="en ...
- QtGui.QInputDialog
The QtGui.QInputDialog provides a simple convenience dialog to get a single value from the user. The ...
- 利用JqGrid结合ashx及EF分页显示列表之二
上一篇文章简单利用JqGrid及ashx进行一个数据列表的显示,要文的重点是利用EF的分页与JqGrid进行结合,EF本文只是简单运用所以没有很规范,重点还是JqGrid分页的实现;本实例把JqGri ...