首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用unix替换js路径

问使用unix替换js路径
EN

Stack Overflow用户
提问于 2022-02-16 17:11:11
回答 3查看 65关注 0票数 3

大家晚上好。我试图使用unix脚本替换*.js文件中的路径。所以,我写了正确的正则表达式和sed不掉,但我不能得到一个正确的结果。

UPD: --我在使用macOS

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

我的审判官:

代码语言:javascript
复制
 \s\*import(.+)from\s+\['\\"\](\\/.+)[^\n]+

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

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

所以,但是我的bash命令

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

返回原来的字符串!你能帮帮忙吗,它怎么了?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-02-16 17:19:42

使用gnu-sed

代码语言:javascript
复制
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"

RegEx解释:

  • \\b:匹配一个单词boundary
  • (import.+ from ):匹配字符串,从单词import开始,在任何字符的1+后面跟着在sides
  • (['\"]):上用空格包围的单词from匹配一个'或"作为开始引号,在组#2
  • ([^'\"]+):匹配中捕获任何非引号的字符,而在组#3
  • \2:中捕获的字符匹配与开头引号

相同的引号

在OSX上使用此sed

代码语言:javascript
复制
sed -E "s~(import.+ from )(['\"])([^'\"]+)~\1\2/myFolder\3~g" <<< "$s"
票数 2
EN

Stack Overflow用户

发布于 2022-02-16 17:51:11

在显示的示例中,请尝试遵循awk代码。用GNU awk编写和测试。

代码语言:javascript
复制
s='import * as module from "/test.js"'
echo "$s" | awk '/^import.*from[[:space:]]+"\//{sub(/\//,"/myFolder&")} 1'

解释:下面是对上述代码的详细说明:。

happen.

  • using

  • 创建一个名为s的变量,该变量中的所有值都是awk程序的输入。

  • 通过echo命令打印它并将其作为标准输入传递给awk程序。awk中的

<代码>H 114程序检查条件:如果一行满足^import.*from[[:space:]]+"\/ regex(基本上检查行是否从导入开始到空格后面接“/”),那么接下来的操作将执行sub函数,以替代awk。requirement.

  • Then中提到的带有/myFolder/的/是在awk.

中打印当前行的一种方法

票数 1
EN

Stack Overflow用户

发布于 2022-02-16 17:20:48

使用sed

代码语言:javascript
复制
$ sed 's|/[^"]*|/myFolder&|' input_file
 import * as module from "/myFolder/test.js"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71146305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档