博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sed命令n,N,d,D,p,P,h,H,g,G,x解析
阅读量:6115 次
发布时间:2019-06-21

本文共 1203 字,大约阅读时间需要 4 分钟。

sed option 'pattern{command1;command2...}'

$cat test.txt

This is 1
This is 2
This is 3
This is 4
This is 5
1.p和P
p打印当前模式空间内容,追加到默认输出之后

sed -n 'N;p' test.txt    结果    This is 1    This is 3

P打印从开始到第一个\n的内容,sed并不对每行末尾\n进行处理,但是对N命令追加的行间\n进行处理,因为此时sed将两行看做一行。

sed -n 'N;P' test.txt  #N前加$!表示末尾行不执行N,可以打印出This is 5在末尾    结果    This is 1    This is 2    This is 3    This is 4

2.n和N

n 提前读取下一行,覆盖模式空间前一行(并没有删除,因此依然打印至标准输出),如果命令未执行成功,则放弃后面的命令,读取下一行再执行sed
sed命令n,N,d,D,p,P,h,H,g,G,x解析
使用n命令后
sed命令n,N,d,D,p,P,h,H,g,G,x解析

sed -n 'n;p' test.txt     结果    This is 2    This is 4    #读取This is 1 执行n命令,此时模式空间值为This is 2.之后读取This is 3 执行n命令后,模式空间值为This is 4.读取This is 5 执行n命令后面没有内容了,所以放弃后面的p命令而退出

N 追加下一行到当前行,把两行看作一行,但是\n换行符还在。如果命令未执行成功,则放弃后面的命令,读取下一行再执行sed

sed命令n,N,d,D,p,P,h,H,g,G,x解析

使用N命令后 

sed命令n,N,d,D,p,P,h,H,g,G,x解析

3.d和D

d 删除当前模式空间内容(不在传到标准输出)并放弃之后的命令,读取新内容重新执行sed
D 删除当前模式空间开端至\n换行符内容(不在传到标准输出)并放弃之后的命令,但是剩余模式空间内容重新执行sed

4.y

y命令用于字符转换与s命令区别在于,y命令中只要查找条件字符中只要有一个字符符合条件便使用替换字符串中相应的字符进行替换

echo " This is a test" | sed 'y/his/HIS/' 而s命令将查找条件字符串作为一个整体    结果    THIS IS a teSt    echo "This is a test" | sed 's/his/HIS/'    结果    THIS is a test

5.h、H,g、G

h命令是将当前模式空间中内容覆盖至保持空间,H命令是将当前模式空间中的内容追加至保持空间
g命令是将当前保持空间中内容覆盖至模式空间,G命令是将当前保持空间中的内容追加至模式空间

参考:

本文转自wanglm51051CTO博客,原文链接:http://blog.51cto.com/studyit2016/2056826 ,如需转载请自行联系原作者

你可能感兴趣的文章
Linux下的CPU性能瓶颈分析案例
查看>>
spring mvc入门
查看>>
2012在数据库技术会议上的讲话PPT打包
查看>>
【Android】 TextView设置个别字体样式
查看>>
python svn
查看>>
raise语句
查看>>
sequence2(高精度dp)
查看>>
ABP实战--集成Ladp/AD认证
查看>>
存储过程
查看>>
phpcms v9栏目列表调用每一篇文章内容方法
查看>>
python 自定义信号处理器
查看>>
luov之SMTP报错详解
查看>>
软件概要设计做什么,怎么做
查看>>
dwr
查看>>
java的特殊符号
查看>>
word2010中去掉红色波浪线的方法
查看>>
fabric上下文管理器(context mangers)
查看>>
JQuery-EasyUI Datagrid数据行鼠标悬停/离开事件(onMouseOver/onMouseOut)
查看>>
并发和并行的区别
查看>>
php小知识
查看>>