shell脚本--sed工具

sed正则表达式

sed:它叫作流式编辑器,它的工做场景通常是在编辑器中,把一段文本按行读入sed中而后按指定的方式输出,这是它最基本的用法。vim


1、sed的基本操做:app


一、/pattern/action编辑器

pattern为正则表达式,对知足pattern的行做action操做ide

例如工具

wKiom1duKazSiX3tAACGTNIcYbc267.png

这条命令和grep基本同样,其中-n的意思是只将执行后面指令的显示出来,若是不加-n选项则会把全部信息显示以便而且把匹配到的多显示一遍,p的意思是打印,若是改为d则是删除。-i的话则会修改源文件学习


二、/pattern/s/pattern1/pattern2/ 查找到第一个pattern所对应的行,而后将其中的pattern1转换为pattern2spa

例如blog

wKioL1duK3zyZ5WvAABdYMNro4g272.png

g的做用是将这一行中全部知足条件的元素都替换掉get


3,范围控制

wKioL1duLDmR8sqnAABC2DQDt_8086.png



2、sed的高级操做


sed的高级操做来源于它的两个空间,一个叫作模式空间,另外一个叫作保持空间,在不显示用命令去使用保持空间的时候,它一直就工做在模式空间中,它的工做方式是这样的,按行读取到模式空间下进行操做后再输出,而后再拿下一行。

保持空间的命令

g:将hold space中的内容拷到pattern space中,

G:将hold space中的内容append到patternspace\n后

h:将pattern space中的内容拷贝到hold space中,

原来的hold space里的内容被清除

H:将pattern space中的内容append到holdspace\n后

d:删除pattern中的全部行,并读入下一新行到pattern中

D:删除multiline pattern中的第一行,不读入下一行

x:交换保持空间和模式空间的内容


例1:将上面的file中的每一行的结尾加一个空格

wKiom1duMVPDdgV8AAAu-rCXYpM086.png


例二:行列转换

wKiom1duM8GwkGhlAAAzQftjqxM341.png


注意:使用H的做用是将每一行都追加到保持模式下,而后在最后将保持空间下的数据交换到

模式空间而后执行替换操做,sed时按行去读取的,读取一行的时候是看不到\n的,只能将所

有数据所有H到保持空间保存起来,才找的到。


例三:倒序打印

wKioL1duNrGzu6hdAAA0TydRBGo108.png


从字面上理解,第一行不从保持空间G,最后一行不用删除模式空间

中的数据,其余行先G,而后h,以后d。


例四:1到100的求和

wKioL1duOiHBHdL3AABHqvXixB4106.png

这个和上面的是相似的。



总结:sed工具的学习主要是多加练习,它更多的是工做在编辑器下对文本的操做

   例如vim编译器下底行模式就能够用s///命令进行替换。

相关文章
相关标签/搜索