首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
V2EX  ›  问与答

求正则批量替换写法

  •  1
     
  •   dazkarieh · 194 天前 · 699 次点击
    这是一个创建于 194 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    ![text](url)
    

    就替换为

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

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

    egrep -rn ' 正则' *.md
    
    sed -i "正则" '正则'
    
    7 回复  |  直到 2019-04-08 10:38:33 +08:00
        1
    yyai3   194 天前
    跑之前请备份

    sed -i -r 's/\!\[(.*)\]\((.*)\)/{{<img src="\1" alt="\2">}}/' *.md
        2
    dazkarieh   194 天前
    @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
    ```
        3
    sheep3   194 天前
    `find hugo/post | grep '\.MD$'` | xargs sed -i 's/\!\[text\]\(url\)/\\{{< img src="url" alt="text">\}\}/g'

    没测试过,打包发给我我,我帮你替换哈哈哈
        4
    dazkarieh   194 天前
    @sheep3 谢谢。哈哈,内容又黄又暴力,不想毒害祖国花朵。

    p.s 代码没效。我这里的 text 是指方括号里的任意文本,url 是指括弧里的任意一个链接地址,并非特指字符。
        5
    skydiver   194 天前
    @dazkarieh Mac 里的 sed 不是 gsed
        6
    yyai3   192 天前
    @dazkarieh gsed bsd-sed 区别 sed -E 's/\!\[(.*)\]\((.*)\)/{{<img src="\1" alt="\2">}}/'
        7
    yyai3   192 天前
    @dazkarieh gsed bsd-sed 区别 sed -E 's/\!\[(.*)\]\((.*)\)/{{<img src="\1" alt="\2">}}/' 参数
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2265 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 15:39 · PVG 23:39 · LAX 08:39 · JFK 11:39
    ♥ Do have faith in what you're doing.