Linux sed基础用法总结

wKiom1epMjSBmc81AAIhN03HQ04708.png

wKioL1epMo3ic5bgAABbQsheook876.png

pattern space   //  文本中每行内容都会进入到pattern space中, 若是匹配到了,就会进入到右分支, 若是没有匹配到,则进入左分支。正则表达式


hold space  //  就是已经被模式匹配到, 而且编辑后保存的内容就是hold space 中.ide

默认状况下,当没有被匹配以后,没有匹配到内容也会被输出到屏幕之上, 一旦被模式匹配上, 就分为两种操做, 一种是标准输出, 另一种则是编辑。测试

 

sed 用法:  sed [option]... script inputfilespa

选项[option]:3d

-n: 不输出模式空间的内容(屏蔽自动输出)orm

        -e: 多点编辑对象

-f: 文件,文件中放地址命令blog

-r: 支持扩展的正则表达式图片

-i: 在文件中直接编辑ip

 

   script == 地址命令  

地址和命令之间没有任何符号。

   

地址定界:

(1). 不给地址,直接操做, 对全文操做

(2)  单地址

1>. #

2>. /pattern/  被此处模式匹配到的每一行

3>.$ 表示最后一行

 

(3) 地址范围

1>. #,#   两个指定行中的全部行,包括两个指定行

2>.#,+#   +#  同上

3>./part1/,/part2/   两次匹配行之间的全部行,包括匹配到的行

4>.#,/part/    指定行到匹配的行

 

(4)~ 步进

1~2   全部的奇数行

2~2  全部的偶数行

 

基础编辑指令:

(1). d  删除匹配到的行

(2). p  显示匹配到的行  通常要与-n一块儿用,不然被匹配到行会显示两次

(3). c   替换匹配的字符串或者行

(4). a   在匹配到行尾追加内容

(5) i   在匹配到行首添加内容

(6) w /path/to/file   sed匹配编辑后的内容保存到另一份文件中

(7) r /path/to/file    将指定文件的内容追加到匹配到行以后

(8) =  打印行号

(9)  !  模式空间中匹配行取反处理

 

替换操做: 删除或者编辑行中部份内容的时候,要使用替换操做

s/匹配到到内容/替换的内容/替换标记

替换标记:

g: 全局替换(整行都替换)  默认只替换第一个匹配到的内容

p: 显示替换成功的行

w:  将替换成功的行指定到模文件中 w /path/to/file

 

高级编辑指令:

高级编辑指令其实就是将模式空间和保持空间中的内容来回互调,实现一些高大上的指令效果。

选项:

wKioL1epMujAiRvtAAJr83hnVvY300.png

高级指令:

以文件c 做为测试:

wKiom1epM4ThWNMrAAALlWpfH9E159.png

sed -n 'n;p' c

显示偶数行

wKiom1epM_aQDopNAAAI44hii9M095.png


sed '1!G;h;$!d' c

倒序

wKiom1epND3zgAtGAAAMPVl27x4593.png


sed '$!N;$!D' c

只显示最后两行

wKioL1epNJHjCgFuAAAH7gI5E70320.png


sed '$!d' c

显示最后一行

wKiom1epNWfgqLELAAAKTCpAnPs171.png


sed ‘G’ c

每行后面加空行

wKiom1epNcmxYL6TAAAS9WO6qhw603.png


sed ‘g’ c

全变成空行

wKioL1epNgrB2DQTAAAHigbBJPU339.png

sed‘ /^$/d;G’d

把全部空格先删了, 而后再来一个空格

以文件d做为测试对象:

wKioL1epNnLwZqvDAAAPAMdsKpM749.png

测试结果:

wKioL1epNsSgeta_AAAUyzl6t00072.png


sed 'n;d' c

显示奇数行

wKioL1epNwfgG1n_AAAMjYrUtzg268.png

sed -n '1!G;h;$p' c

逆序

wKiom1epN2qAzln-AAAPInxq5EE434.png

相关文章
相关标签/搜索