一次批量替换多个文件中的多个变量

一次批量替换多个文件中的多个变量

示例:我有 40 个不同的变量,$VAR例如.txt位于/home/user/EXAMPLE/.如何替换 100 个文件中的所有变量?

为了告诉系统变量是什么,最好使用类似的文件.csv.txt带有分隔符的文件。例子:

$VAR=x 
$VAR2=xx
$VAR3=xxx

知道如何进行批量编辑吗?

答案1

将问题分为两部分:

  1. 遍历文件
  2. 将替换应用到文件

如果您在EXAMPLE目录中,您可以像这样循环遍历所有文件

for file in *.txt
do
    echo "Considering file $file"
done

要替换一组变量,理想情况下没有一个变量会与现有的 shell 变量(例如$PATH$HOME)冲突,然后您可以使用envsubst.

创建一个文件variables.sh,其中每一行都采用以下格式:

export varname=value
export anothername='a longer value'

然后,您可以使用此代码将诸如$varname和 之类的变量替换$anothername到命名文件中:

( . variables.sh; envsubst ) <"$file" >"$file.tmp" &&
    mv -f "$file.tmp" "$file"

将这些滚动在一起:

for file in *.txt
do
    echo "Considering file $file"
    ( . variables.sh; envsubst ) <"$file" >"$file.tmp" &&
        mv -f "$file.tmp" "$file"
done

相关内容