求正则批量替换写法

2019-04-06 17:33:16 +08:00
 dazkarieh

各位大佬: 我想检索hugo/post/目录下所有*.MD 文件的内容(几百篇,手动替换会死人),如果遇到

![text](url)

就替换为

{{< img src="url" alt="text">}}

我能想到类似下面的 egrep、sed 用法,但是文科生不会写正则……

egrep -rn ' 正则' *.md
sed -i "正则" '正则'
1466 次点击
所在节点    问与答
7 条回复
yyai3
2019-04-06 17:51:19 +08:00
跑之前请备份

sed -i -r 's/\!\[(.*)\]\((.*)\)/{{<img src="\1" alt="\2">}}/' *.md
dazkarieh
2019-04-06 18:27:03 +08:00
@yyai3 谢谢这位兄弟!不过貌似有点小问题

```bash
iMac:hugo root# cd post
iMac:post root# sed -i -r 's/\!\[(.*)\]\((.*)\)/{{<img src="\1" alt="\2">}}/' *.md
sed: 1: "s/\!\[(.*)\]\((.*)\)/{{ ...": \2 not defined in the RE
```
sheep3
2019-04-06 18:40:23 +08:00
`find hugo/post | grep '\.MD$'` | xargs sed -i 's/\!\[text\]\(url\)/\\{{< img src="url" alt="text">\}\}/g'

没测试过,打包发给我我,我帮你替换哈哈哈
dazkarieh
2019-04-06 19:05:39 +08:00
@sheep3 谢谢。哈哈,内容又黄又暴力,不想毒害祖国花朵。

p.s 代码没效。我这里的 text 是指方括号里的任意文本,url 是指括弧里的任意一个链接地址,并非特指字符。
skydiver
2019-04-06 19:12:36 +08:00
@dazkarieh Mac 里的 sed 不是 gsed
yyai3
2019-04-08 10:34:39 +08:00
@dazkarieh gsed bsd-sed 区别 sed -E 's/\!\[(.*)\]\((.*)\)/{{<img src="\1" alt="\2">}}/'
yyai3
2019-04-08 10:38:33 +08:00
@dazkarieh gsed bsd-sed 区别 sed -E 's/\!\[(.*)\]\((.*)\)/{{<img src="\1" alt="\2">}}/' 参数

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

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

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

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

© 2021 V2EX