如何在复杂的文本文件中替换shell变量
我有几个文本文件,其中介绍了shell变量(例如$ VAR1或$ VAR2)。
我想将这些文件(一个接一个)保存在新文件中,其中所有变量都将被替换。
为此,我使用了以下shell脚本(可在StackOverflow上找到):
while read linedo
eval echo "$line" >> destination.txt
done < "source.txt"
这在非常基本的文件上效果很好。
但是在更复杂的文件上,“ eval”命令执行的操作过多:
跳过以“#”开头的行
XML文件解析导致大量错误
有更好的方法吗?(在shell脚本中……例如,我知道这很容易用Ant完成)
亲切的问候
回答:
看,原来我的系统上有一个envsubst
命令是gettext-base包的一部分。
因此,这很容易:
envsubst < "source.txt" > "destination.txt"
请注意,如果您想为两者使用相同的文件,则必须使用moreutil’s之类的东西sponge
,如Johnny Utahh所建议envsubst <
"source.txt" | sponge "source.txt"。(因为shell重定向会在读取之前清空文件。)
以上是 如何在复杂的文本文件中替换shell变量 的全部内容, 来源链接: utcz.com/qa/408211.html