首页 > 解决方案 > 如何使用 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"

但是,这里有两个问题

  1. 我真的不想在终端中引用“www.yahoo.com”,因为 url 一直在变化,我想要的是在“server:”之后使用一些正则表达式来捕获这个 url

  2. 如何在终端中引用 Javascript 变量?

我真的被困在这里,任何帮助

标签: javascriptsedterminal

解决方案


如果确实需要,有一种方法可以让 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()可以理解任何数据,但在您的情况下不应该有任何返回。


推荐阅读