【发布时间】:2019-06-13 06:12:20
【问题描述】:
我需要用 sed 替换缩小的 javascript 文件中的几个值。操作系统是 alpine Linux。
我正在尝试锻炼一个通用正则表达式,它将找到 foo: 和任何字符,直到下一个 , 像这样:foo:____ 并替换为 foo:"bar" 或 foo:!0,无论变量中的值可能是。这个脚本需要一直工作。它不应该依赖于在 : 之后出现(意味着该属性的值是什么)。
这是文件中的前几个字符
(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{3:function(l,n,t){l.exports=t("zUnb")},AytR:function(l,n,t){"use strict";t.d(n,"a",function(){return e});var e={appVersion:"1.4-beta",buildNr:"123.123",production:!0,tracking:!0,apiHost:"/api/",foo:""}},Cdxl:function(l,n,t){"use strict";t.d(n,"a",function(){return a});
这是我的开始,它根本不是通用的......
APP_VERSION='"1.4-beta"'
BUILD_NR='"20190118.1"'
PRODUCTION="!"
TRACKING="!0"
API_HOST='"/api/"'
FOO='"bar"'
# demo for the first 3 variables
sed -i "s/appVersion:[\"0-9A-Za-z.]*/appVersion:${APP_VERSION}/;s/buildNr:[\"0-9A-Za-z.]*/buildNr:${BUILD_NR}/;s/production:[!0-9A-Za-z.]*/production:${PRODUCTION}/" path/to/js-file.js
我尝试了几个小时 - 任何建议都非常受欢迎。
提前致谢!
【问题讨论】:
-
你的问题是什么?
-
如果你想匹配到下一个
,,你可以使用[^,]* -
具有更好解决方案的跨站点复制:unix.stackexchange.com/questions/476536/…
标签: javascript regex bash sed