我正在尝试读取文件,更改它的某些部分并将其写入bash中的新文件。我知道我可以用" sed"命令,但我不知道如何在我的情况下,这是我的文件开头的矩阵。这是我的文件的样子
alpha
1 0 0
0 1 0
0 0 1
some text here
more numbers here
我试图在像
这样的for循环中替换上面矩阵的值for i in 1 2 3 4
do
replace 1 0 0
0 1 0
0 0 1
by 1*(1+${i}) ${i}/2 0
${i}/2 1 0
0 0 1
and print the whole file with the substitution to newfile.${i}
done
我想在bash中这样做。知道怎么做吗?而且我只想改变这一部分而只是改变这一部分!
答案 0 :(得分:0)
Awk更适合这个:
for i in {1..4}; do awk -v i="$i" -f substitute.awk oldfile.txt > newfile.$i; done
使用以下substitute.awk
脚本:
{
if( NR == 3 ) { print 1 + i, i / 2, 0 }
else if( NR == 4 ) { print i / 2, 1, 0 }
else print $0
}
(假设,正如你所写,矩阵总是在第3到第5行;在你的例子中,它在第2到4行)