当前位置: 首页 > 面试题库 >

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

阎丰
2023-03-14
问题内容

我有几个文本文件,其中介绍了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’s之类的东西sponge,如Johnny Utahh所建议envsubst < "source.txt" | sponge "source.txt"。(因为shell重定向会在读取之前清空文件。)



 类似资料:
  • 本文向大家介绍Python替换文件中的文本,包括了Python替换文件中的文本的使用技巧和注意事项,需要的朋友参考一下 例子            

  • 问题内容: 我怎样才能做到这一点? 它将替换为文本。但是我想用变量的内容替换它。 我尝试过 它也不起作用。 问题答案: 您需要使用双引号: 您的单引号可防止将shell变量替换为其内容。

  • 问题内容: 如何使用Python 3搜索和替换文件中的文本? 这是我的代码: 输入文件: 当我在上面的输入文件中搜索并将“ ram”替换为“ abcd”时,它起了一种魅力。但是,反之亦然,即用“ ram”替换“ abcd”时,一些垃圾字符会保留在末尾。 用“ ram”代替“ abcd” 问题答案: fileinput已经支持就地编辑。stdout在这种情况下,它将重定向到文件:

  • 问题内容: 我试图通过读取每一行,对其进行测试,然后编写是否需要更新来替换文本文件中的文本。我不想另存为新文件,因为我的脚本已经先备份了文件并可以进行备份。 到目前为止,这是我所拥有的…我从os.walk()获得了fpath,并保证pathmatch var正确返回: 但是最终发生的是,我只得到了几行(正确更新,请注意,但是从文件的开头重复了)。我认为这是一个范围界定的问题。 *另外:我想知道如何

  • 问题内容: 我正在运行Python 2.7。 我有三个文本文件:,,和。现在,包含我要搜索的几行并将该部分替换为中的内容。这是一个简单的示例: data.txt find.txt replace.txt 所以,在上面的例子中,我要搜索的所有出现,以及在数据和更换这些线路。 我在使用正确的方法时遇到了一些麻烦,因为我的内存大约为1MB,所以我想尽可能地提高效率。一种愚蠢的方法是将所有内容连接成一个长

  • 问题内容: 我的一个同事写了一堂课。他的班级使用我的班级。他没有告诉JVM每次编译类时我的类都在哪里,而是将这两个类打包到一个jar文件中,我可以像这样运行: 现在,我决定对班级进行更改。因此,由于我的班级已经预编译到他的jar中,所以他的班级(我仍然需要使用)使用我的旧班级。我的同事离开了,我不知道他如何将所有内容打包到一个jar文件中供我使用。 现在,当我尝试使用时,当他的班级调用我的班级时,