gpt4 book ai didi

linux - 如何在复杂的文本文件中替换 shell 变量

转载 作者:IT老高 更新时间:2023-10-28 12:33:05 31 4
gpt4 key购买 nike

我有几个文本文件,我在其中引入了 shell 变量(例如 $VAR1 或 $VAR2)。

我想把这些文件(一个一个)保存到所有变量都被替换的新文件中。

为此,我使用了以下 shell 脚本(可在 StackOverflow 上找到):

while read line
do
eval echo "$line" >> destination.txt
done < "source.txt"

这对非常基本的文件非常有效。

但是在更复杂的文件上,“eval”命令做的太多了:

  • 跳过以“#”开头的行

  • 解析 XML 文件会导致大量错误

有没有更好的方法呢? (在 shell 脚本中......我知道这很容易用 Ant 完成)

亲切的问候

最佳答案

看,原来我的系统上有一个 envsubst 命令,它是 gettext-base 包的一部分。

所以,这很容易:

envsubst < "source.txt" > "destination.txt"

请注意,如果您想对两者使用相同的文件,则必须使用类似 moreutil 的 sponge 的文件。 ,正如 Johnny Utahh 所建议的那样:envsubst < "source.txt" | sponge "source.txt" . (因为 shell 重定向会在读取之前清空文件。)

关于linux - 如何在复杂的文本文件中替换 shell 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14155596/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com