博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文本处理三剑客之sed基本用法
阅读量:5887 次
发布时间:2019-06-19

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

hot3.png

sedstreameditor,意为流编辑器,是类Unix操作系统常见的命令行程序。sed用来把文档或字符串里面的文字经过一系列编辑命令转换为另一种格式输出;sed通常用来匹配一个或多个正则表达式的文本进行处理。

sed工作原理:

sed维护了两个数据的缓冲空间:模式空间(patternspace)和保留空间(hold space),初始环境都为空;

1、当sed命令对一个文本文件进行处理,逐行读取文本文件进行地址匹配,将匹配到的行放在模式空间中;

2sed的编辑命令对模式空间中的内容进行编辑操作,然后将编辑后的内容放在保留空间;

3、继续读取下一行执行以上操作,直到最后一行;

正则表达式:与之前学习到的grep命令一样,sed命令的地址模式匹配支持正则表达式;

BRE

字符匹配:.[][^]

次数匹配:*\?\+\{m,n\}

位置锚定:^$\<\>

分组引用:\(\)\1,、2...    

 

ERE:

次数匹配:*?+{m,n}

分组:()

或者:|

 

sed命令格式:

# sed [option] '地址・编辑命令' FILE

sed常用选项:

-n:静默模式,不显示模式空间中的内容-r:支持使用扩展正则表达式;-i:修改原文件;-e:sed -e ""-e "" -e "",sed "{COM1;COM2;COM3}";表示使用多个命令-f /PATH/TO/SED_SCRIPT:从指定的文本中读取处理脚本;

编辑命令:命令可在之前加!取反

p:打印;d:删除;i \TEST:匹配到的行上方插入TEST内容;a \TEST:匹配到的行下方插入TEST内容;c \TEST:修改匹配到的TEST内容;r /PATH/TO/SOME_FILE:匹配到的内容下方插入指定文件;w /PATH/TO/SOME_FILE:把符合条件的行保存至指定的文件中;=:显示符合条件行的行号; s/TEST1/TEST2/gi,s@TEST1@TEST2@gi:内容替换

地址:

行范围:

sratr_line,end_line:起始行,结束行

/patten1/,/patten2/:第一次被pattern1匹配到的行开始,到第一次被pattern2匹配到的行结束之间的所有行;

特定行:

line

/pattern/

无地址:全文

 

实例练习:

1、复制/etc/inittab文件至/tmp/目录,替换/tmp/inittab文件中的"id:3:initdefault"一行数字为5

# cp /etc/inittab /tmp/# sed's/id:3:initdefault/id:5:initdefault/' /tmp/inittab

 

2、复制/etc/rc.d/init.d/functions文件至/tmp目录,删除/tmp/functions文件的空白行;

# cp /etc/rc.d/init.d/functions/tmp/# sed '/^[[:space:]]*$/d'/tmp/functions

 

3、复制/boot/grub/grub.conf文件至/tmp/目录,删除/tmp/grub.conf文件中行首的空白字符;

# cp /boot/grub/grub.conf /tmp/# sed 's@^[[:space:]]\+@@'/tmp/grub.conf

 

4echo一个路径给sed,通过sed取出其路径名;例如echo"etc/sysconfig/network-scripts/" | sed,返回路径名/etc/sysconfig/

# echo"/etc/sysconfig/network-scripts/" | sed 's@[^/]\+/\?$@@'

 

本文出自 “” 博客,请务必保留此出处

转载于:https://my.oschina.net/masachencer/blog/540876

你可能感兴趣的文章
jquery css3问卷答题卡翻页动画效果
查看>>
$digest already in progress 解决办法——续
查看>>
mysql 数据类型
查看>>
Ubuntu 设置当前用户sudo免密码
查看>>
ionic 调用手机的打电话功能
查看>>
怎么使用阿里云直播服务应用到现在主流直播平台中
查看>>
判断点是否在三角形内
查看>>
知行合一
查看>>
jmeter插件之jsonpath提取响应结果和做断言
查看>>
[Contiki系列论文之1]Contiki——为微传感器网络而生的轻量级的、灵活的操作系统...
查看>>
Android 网络编程 记录
查看>>
微软同步发行Windows 10和Windows 10 Mobile系统更新
查看>>
Zeppelin的入门使用系列之使用Zeppelin运行shell命令(二)
查看>>
form表单下的button按钮会自动提交表单的问题
查看>>
那些年追过的......写过的技术博客
查看>>
python基础教程_学习笔记19:标准库:一些最爱——集合、堆和双端队列
查看>>
CSS魔法堂:Transition就这么好玩
查看>>
C/C++ 多线程机制
查看>>
如何使用Core Text计算一段文本绘制在屏幕上之后的高度
查看>>
2010技术应用计划
查看>>