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

简介:

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命令是将当前保持空间中的内容追加至模式空间

参考:https://www.cnblogs.com/276815076/p/5237886.html














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

相关文章
|
1月前
|
Shell iOS开发 MacOS
|
1月前
|
Shell Linux UED
|
1天前
|
监控 Linux 数据处理
|
20天前
|
安全 Java Shell
Android13 adb input 调试命令使用和源码解析
Android13 adb input 调试命令使用和源码解析
28 0
|
27天前
|
存储 Linux
U-Boot 命令解析(二)
U-Boot 命令解析(二)
|
27天前
|
Linux 内存技术
U-Boot 命令解析(一)
U-Boot 命令解析(一)
|
27天前
|
网络协议 Linux
Linux 命令 ifconfig 全面解析!
Linux 命令 ifconfig 全面解析!
|
1天前
PandasTA 源码解析(二十三)
PandasTA 源码解析(二十三)
7 0
|
1天前
PandasTA 源码解析(二十二)(3)
PandasTA 源码解析(二十二)
5 0
|
1天前
PandasTA 源码解析(二十二)(2)
PandasTA 源码解析(二十二)
9 2

推荐镜像

更多