如何用bash中变量的值替换第i行的第j列

Jac*_*cek 2 regex bash awk sed

我有一个看起来像这样的文件:

6 6 1
0 0 0
0.0 0.0 0.0

2.938947259546411 -5.090405972278119 0.000000000000000
Run Code Online (Sandbox Code Playgroud)

我想用 var1 的值替换第一行的第一列,用 var2 的值替换第一行的第二列

数字的值可以改变;此外,第一行中有重复的值,所以我不能使用类似的东西sed -i "s/6/$var1/"file

有没有办法让我将文件修改为

3 2 1
0 0 0
0.0 0.0 0.0

2.938947259546411 -5.090405972278119 0.000000000000000
Run Code Online (Sandbox Code Playgroud)

让 var1 为 3,var2 为 2?

anu*_*ava 5

awk 可以轻松处理:

var1='3'
var2='2'
awk -v c1="$var1" -v c2="$var2" 'NR==1{$1=c1; $2=c2} 1' file
Run Code Online (Sandbox Code Playgroud)

3 2 1
0 0 0
0.0 0.0 0.0

2.938947259546411 -5.090405972278119 0.000000000000000
Run Code Online (Sandbox Code Playgroud)