如何使用sed将变量替换为另一个变量

时间:2019-04-02 16:13:05

标签: bash shell

我想用3个变量替换文本文件中的一行。 搜索关键字也是一个变量。

此外,每个变量之间需要2个空格。

我尝试了以下代码:

let count = fooArray.reduce(0) { $0 + ($1.bars?.count ?? 0) }

sed -i -e 's/'"$keyword"'/'"$var1"' '"$var2"' '"$var3"'/' file.txt

sed -i -e 's/"$keyword"/"$var1" "$var2" "$var3"/' file.txt

假设文件为:

sed -i -e "s/$keyword/$var1  $var2  $var3/" file.txt

因此,通过搜索Banana Apple Pear America Spain Italy ,我想要以下结果:

America

1 个答案:

答案 0 :(得分:1)

它应该不复杂

var1=Orange
var2=Grape
var3=Fig
text=America

sed "/${text}/{s/^.*$/${var1}  ${var2}  ${var3}/}" filename

输出

Banana Apple Pear
Orange  Grape  Fig

关键是使用双引号,以便扩展bash变量。请注意,此变量扩展发生在sed处理开始之前。

要替换整行^.*$,即从开始(^)开始,选择出现任意次数({{1 }})到最后(.)。