javascript - 如何使用 Bash 命令在包含一些 Javascript 变量的文件中查找和替换
问题描述
我正在用 Javascript 编写一些代码,并且我定义了几个变量,称为
const url = "www.google.com"
const data = "xyz"
我还有一个文本文件,如下所示:
clusters:
- cluster:
server: www.yahoo.com
certificate-authority-data: abc
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: aws
name: aws
我要做的就是用我定义的变量替换“服务器”名称和“证书授权数据”,看起来像“
clusters:
- cluster:
server: www.google.com
certificate-authority-data: xyz
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: aws
name: aws
我读到要使用
sed -i "s%www.yahoo.com%www.google.com%g" "test.txt"
但是,这里有两个问题
我真的不想在终端中引用“www.yahoo.com”,因为 url 一直在变化,我想要的是在“server:”之后使用一些正则表达式来捕获这个 url
如何在终端中引用 Javascript 变量?
我真的被困在这里,任何帮助
解决方案
如果确实需要,有一种方法可以让 nodejs 执行 bash 命令。 NodeJS 外壳命令。在这种情况下,它可能看起来像这样:
const replaceUrl = "www.yahoo.com";
const url = "www.google.com";
const data = "xyz";
child_process.execSync('sed -i "s%' + replaceUrl + '%' + url + '%g" "test.txt"').toString();
我在这里使用了同步版本,因为它很方便,但是异步版本可以与回调一起使用。该函数返回一个缓冲区,因此.toString()
可以理解任何数据,但在您的情况下不应该有任何返回。
推荐阅读
- list - 如何在字典中迭代和存储变量?
- node.js - setInterval() 在 azure microsoft 中不起作用
- jenkins - 从当前 Jenkins 控制台日志中提取文本
- google-play-console - Google Play 管理中心新更新中的应用访问
- mysql - 在sql字符串部分搜索
- docker - 设置 docker-compose 卷
- vb.net - 在 BackgroundWorker 中集成 FileSystemWatcher 代码以避免 GUI 冻结
- sql - 在没有 Split_Lines 的情况下将列转换为多行 - SQL Server 2008
- google-maps - 如何使用谷歌地图api在折线中分配信息窗口
- php - Laravel 正在创建缓存,但加载时间相同