情况就是这样。
我有许多输入属性如下:
$Prop1 = value1;
$Prop2 = value2;
$Prop3 = value3;
并且在包含少量子文件夹的文件夹下有一些带有以下内容的txt文件(文件具有不同的内容但格式相同): 文件位于文件夹中,子文件夹很少。
{{Prop1}}.{{Prop2}}
{{Prop2}}-{{Prop3}}
{{Prop1}}:{{Prop4}}:{{Prop2}}-{{Prop4}}
${Argument1} = {{Prop1}}.{{Prop2}}.{{Prop3}}.{{Prop4}}
有些人可以帮我解决下一个案件:
提前致谢
UPD:
答案 0 :(得分:1)
Perl可以处理这种条件搜索&取代
#!/bin/bash
Prop1=value1
Prop2=value2
Prop3=value3
export Prop1 Prop2 Prop3
shopt -s globstar
perl -i.bak -pe '
s[ ( \{\{ (.+?) \}\} ) ]
[
if (exists $ENV{$2}) {
$ENV{$2}
} else {
warn "unknown property $2 in file $ARGV\n";
$1
}
]gex
' **/*.txt
e
命令的s///
标志允许您在替换块中运行任意perl代码
运行它:
$ bash replace_props.sh
unknown property Prop4 in file sub1/file.txt
unknown property Prop4 in file sub1/file.txt
unknown property Prop4 in file sub1/file.txt
$ cat sub1/file.txt
value1.value2
value2-value3
value1:{{Prop4}}:value2-{{Prop4}}
${Argument1} = value1.value2.value3.{{Prop4}}