请教大家一个 sed 匹配字符串的写法

2018-06-27 23:23:27 +08:00
 mrco

Hi,

比如有下面的文本:

======KVM 虚拟化手册======
=====简介=====
=====安装和配置 kvm 虚拟化=====
====检查是否支持 KVM====
====安装 kvm 虚拟化平台====
====配置 nested virtualization====
==== 配置网络====
====重启系统并检查相关配置====
=====virsh 创建 & 安装虚拟机=====
====通过 VNC 进行安装====
=====REFERENCE=====

匹配以=开头,并以=结尾的行,然后在左边的=后面加入字符串-,得到:

==== - 配置网络 ====

请问大家应该如何实现?

我只知道如何匹配出来,不知道怎么添加字符串...

sed -n '/^\.*=\.*=$/p' kvm.txt
2820 次点击
所在节点    问与答
7 条回复
chunk
2018-06-28 00:13:49 +08:00
sed -E 's/^(=*)([^=].+)(=+)$/\1-\2\3/g' kvm.txt
mrco
2018-06-28 00:21:32 +08:00
@chunk 很屌啊....可否麻烦解释下呢...
rrfeng
2018-06-28 00:37:31 +08:00
让它贪婪过去就好了
s/^=(=*)(.*)=$/=\1-\2=/
ETiV
2018-06-28 00:55:07 +08:00
这正则看着很像 brain fuck 语言啊,2333
CEBBCAT
2018-06-28 08:43:03 +08:00
行内多次替换 -g
三个括号对应 \1 \2 \3,截取用的 ()
=+、=*、[^=].+、^、$ 你应该懂

@mrco
@chunk

应该没理解错
CEBBCAT
2018-06-28 08:44:06 +08:00
@CEBBCAT 断句好像有不小问题,楼主自己多试试就能理解了
mrco
2018-06-28 09:15:13 +08:00
@CEBBCAT 嗯嗯嗯,就是喜欢这种豁然开朗的感觉....谢谢大家~~~~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/466412

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX