Linux Shell编程笔记6 sed流编辑器

本文深入讲解sed流编辑器的功能和用法,包括打印、删除、替换等操作,以及如何使用正则表达式处理文本流。通过实例演示了sed在文件处理中的强大能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

sed是一个流编辑器,它会读取文件流,以行为单位进行处理。sed会按照顺序执行对每一行执行命令。sed把每一行结果写入标准输出,不修改任何输入文件。一般来说,文件流需要处理每一行的时候,需要借助sed进行处理。

打印和删除

-e参数表示执行一个命令脚本,而这个脚本都用' '扩起来。脚本支持正则式,比如需要使用/ /括起来正则式的内容。

几个常见的用法:

sed -e 'd' /tmp/passwd.bak  # 对每一行执行删除,'d'就是删除命令,所以没有任何输出
sed -e '5d' /tmp/passwd.bak  # 删除第五行
sed -e '1,5d' /tmp/passwd.bak  # 删除第一行到第五行,闭区间
sed -e '/^#/d' /etc/rc.local  # 删除所有的注释行,注意正则式/^#/

几个常用的正则式:

有几个其它的命令,比如-p选项表示打印匹配上的行。

一个例子,打印main函数的内容:

sed -n -e '/main[[:space:]]*(/,/^)/p' /tmp/a.c | more

替换

以行为单位,执行文本流的替换,举个例子:

sed -e 's/power/jiecheng/g' /tmp/a.c

把所有的power替换成jiechengs表示替换命令,g表示全局操作,如果没有g,则只替换第一个。

sed -e '1,10s/power/jiecheng/g' /tmp/a.c

和上个命令一样,只不过范围是1-10行了

sed -e '/main[[:space:]]*(/,/^)/s/power/jiecheng/g' /tmp/a.c

范围成了main函数内部了。

sed可以修改分隔符,比如

sed -e 's:/usr/local:/usr:g' mylist.txt

/usr/local替换成/usr,此时分隔符成了:,当然也可以添加\来转义操作。

注意一点,sed正则替换的时候,默认替换全文的最长匹配,而不是每一行的匹配。举个例子:
main.html文件

<html>
<head>main page<head>
<body><b>This</b>is <b>main</b>page.</body>
</html>

我们打算去掉所有的标签,如果直接执行:

sed -e 's/<.*>//g' main.html

那么所有的都会被替换了,输出空。正确的匹配方式应该是:

sed -e 's/<[^>]*>//g' main.html

意思是,^>表示非>符号,遇到了就跳出任意字符的匹配,而匹配上了*后的>,直接替换匹配结束。

命令组合

有些时候,我们需要把多个命令应用到一行中,下面给出几个组合方式。第一个是使用分号分隔命令:

sed -n -e '=;p' /tmp/passwd.bak

输出行号,然后打印。

内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、CO和SO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性和便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果计算和结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡计算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征和技术改进方向;④为企业研发更高效的生物质炉具提供参考。 其他说明:该研究通过大量数据分析和模拟,揭示了生物质炉具在实际应用中的优点和挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向和政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还开发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值