regex - sed 命令 - 从 spec 文件中获取值并将其分配给 sh 文件中的变量

标签 regex linux bash shell sed

我有两个文件,spec 文件和 sh 文件。

spec 文件中的变量保存一个值。我希望将该变量的值分配给 sh 文件中的另一个变量。

spec 文件包含以下内容:

    HOSTID=10

sh文件中有一个变量:

    ACTIVE_HOSTID=

我在 spec 文件中使用了以下 sed 命令。

sed "s/$HOSTID/ACTIVE_HOSTID/g" spec_file>sh_file

谁能帮我解决这个问题?

编辑:

我的规范文件看起来像:

HOSTID=`ip addr | grep ether | awk '{print $2}' | head -n 1 | sed -e 's/\://g'`

我的 sh 文件看起来像:

    ACTIVE_HOSTID=
    BACKUP_SERVER_HOSTID=
    EXTENDED_SUFFIX=
    EXTRA_SYSPROPERTIES=

现在我需要从 HOSTID 获取 ACTIVE_HOSTID 的值。

编辑 2:

我尝试了以下方法:

    sed -i "s/ACTIVE_HOSTID=.*/ACTIVE_HOSTID=HOSTID/" sh_file 

它正在用字符串“HOSTID”而不是它的值替换 ACTIVE_HOSTID。 如果我使用像“$”这样的

    sed -i "s/ACTIVE_HOSTID=.*/ACTIVE_HOSTID=$HOSTID/" sh_file 

ACTIVE_HOSTID 还是空的

最佳答案

HOSTID 赋值之后将其放入 spec_file 中。

sed -i.bak "s/ACTIVE_HOSTID=.*/ACTIVE_HOSTID=$HOSTID/" sh_file

您的代码正在替换该行的 ACTIVE_HOSTID= 部分,但您想替换之后的部分。

关于regex - sed 命令 - 从 spec 文件中获取值并将其分配给 sh 文件中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46122924/

相关文章:

python - 从包含括号的文本中提取键值对(日志文件)

regex - Vim 中的 Perl 正则表达式?

macos - 如果命令带有用户输入 OS X 终端

bash - 使用awk提取vcf列子字符串

Linux Bash 脚本 - 将参数中的小写路径与实际文件系统路径匹配

regex - 使用正则表达式匹配多个逗号分隔的单词

用于检查字符串中至少 3 个插入符号的 Javascript 正则表达式

linux - 将秒数转换为 hh :mm:ss format (or whatever format Excel or LibreOffice likes) and insert it back to a csv file in Bash

linux - 提取两个模式之间第一次出现的文本

linux - 使用 sh 监视输出时无法解决此错误