我想用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
答案 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 }})到最后(.
)。