温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

sed工具的使用

发布时间:2020-07-30 04:21:05 来源:网络 阅读:400 作者:yayaru9240 栏目:编程语言

sed:流式编辑器,把前一个程序的输出结果引入sed的输入,经过一系列编辑命令转换为另种格式输出

命令的基本格式:

sed option 'script' file1 file2 ...

sed option -f scriptfile file1 file2 ...

其中处理的文件可以由标准输入重定向得到,也可由命令行参数传入,sed会依次处理传入的多个文件,然后逐行进行处理

sed的编辑命令可以直接当命令行参数传入,也可以写成一个脚本文件然后由-f参数指定,编辑命令的格式为 /pattern/action

pattern为正则表达式,action为符合条件的正则表达式所要执行的相应动作

sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲

区中,称为“模式空间”(pattern space),接着使用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往标准输出。接着处理下一行,这样不断重复,直到文件末尾。而该操作使文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件

如下图所示,sed的操作过程

sed工具的使用

sed的使用操作

1.输出符合正则表达式的行,只输出以2结尾的行,需要加上-n选项

sed工具的使用

2.删除符合正则表达式的行,删除以3结尾的行

sed工具的使用

3.查找符合pattern的行,将该行第一个匹配pattern1的字符串替换为pattern2,需要加上s指令

sed工具的使用sed工具的使用

sed工具的使用

其中使用-i选项会更改文件的内容

4.查找符合pattern的行,将该行所有匹配pattern1的字符串替换为pattern2,在编辑命令后加上g表示全替换

查找以1开头的行,将该行的每个1都替换为~1~,其中&符号表示pattern1的内容

sed工具的使用

对所有数字行进行处理

sed工具的使用

对数字和字母行进行处理

sed工具的使用

给每行后加上换行符

sed工具的使用

4.定址:用于决定对哪些行进行编辑。地址的形式可以是数字、正则表达式、或两者的结合,如果没有指定地址,sed将处理输入文件的所有行

打印指定行

sed工具的使用

打印某一区域内的所有行

sed工具的使用

也可通过管道先找到前15行再显示出后5行,不过使用sed命令就更简便些了

如果没有定址,sed将显示所有行

sed工具的使用

查找从1到3结尾的行并显示

sed工具的使用

5.保持空间与模式空间转换相关命令和选项

sed工具的使用

sed工具的使用

sed工具的使用

1.给每行的结尾加一个空行,因为保持空间开始的内容为空,因此把保持空间的内容追加到模式空间中,即给每行后加上一个空行

sed工具的使用

2.逆序输出文件中内容

可以使用tac工具输出

sed工具的使用

使用sed命令实现

sed工具的使用

该条编辑命令为:若为第1行则不做紧跟在后边的G操作,但做h(将模式空间内容拷贝到保持空间,删除原来保持空间的内容)操作,即不把保持空间的内容追加到模式空间,若不是第1行,则做G操作,若为最后一行,则不做d操作,若不为最后一行,则删除模式空间的内容,并读入下一新行到模式空间中

3.追加匹配行到文件结尾

查找以9结尾的并追加到文件结尾

sed工具的使用

若为第一行则先进行H操作,再拷贝一次

sed工具的使用

4.行列转换

sed工具的使用

sed工具的使用

sed工具的使用

在模式空间行的结尾进行x,每行的结尾的\n用空格代替

5.1到100的求和

H表示把模式空间的内容追加到保持空间中去,H可以带一个地址,如$,表示到文件的末尾,然后用x将之取到模式空间中,把\n替换成空格,再打印 

sed工具的使用

也可使用类C式的goto语句

sed工具的使用

:a表示标签a,ba表示跳转(break)到a标签,$!表示最后一行不做后续操作,$!ba表示最后一行不跳转到标签a,结束此次操作

6.打印偶数行或基数行

sed工具的使用

7.注释转换

给每行加上注释,再底行模式下使用以下命令

sed工具的使用

对满足正则表达式的行去注释

sed工具的使用

给满足正则表达式的行加上注释

sed工具的使用

从某行开始加上后半部分注释

sed工具的使用

注释转换

sed工具的使用

sed工具的使用


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI