gpt4 book ai didi

regex - 使用 unix sed 替换 js 路径

转载 作者:行者123 更新时间:2023-12-05 03:28:54 25 4
gpt4 key购买 nike

大家晚上好。我正在尝试使用 unix sed 脚本替换 *.js 文件中的路径。所以,我写了正确的正则表达式,sed 没有落下,但我得不到正确的结果。

UPD:我使用的是 macOS

传入字符串:import * as module from "/test"

我的正则表达式:

 \s\*import(.+)from\s+\['\\"\](\\/.+)[^\n]+

找到路径模式并返回我需要的两个组(* as module/test.js)

例如,我需要将 import\* as module from "/test" 更改为 import\* as module from "/myFolder/test.js"

所以,但是我的 bash 命令

echo 'import * as module from "/test.js"' |
sed -r "s:\s*import(.+)from\s+['\"](\/.+)[^\n]+:import \1 from \"\/myFolder\2\":g "

返回原始字符串!请问有什么问题吗?

最佳答案

使用gnu-sed:

s='import * as module from "/test.js"'
sed -E "s~\\b(import.+ from )(['\"])([^'\"]+)\2~\1\2/myFolder\3\2~g" <<< "$s"

import * as module from "/myFolder/test.js"

正则表达式解释:

  • \\b:匹配一个词的边界
  • (import.+ from ):匹配以单词 import 开头的字符串,后跟任何字符的 1+ 个,后跟单词 from 包围两边的空间
  • (['\"]):将 '" 匹配为开头引号并捕获到第 2 组
  • ([^'\"]+):匹配 1+ 个不是引号的任何字符并捕获到第 3 组
  • \2:匹配与开头引号相同的引号

在 OSX 上使用这个 sed:

sed -E "s~(import.+ from )(['\"])([^'\"]+)~\1\2/myFolder\3~g" <<< "$s"

关于regex - 使用 unix sed 替换 js 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71146305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com