使用sed或awk用另一个值替换字段

Ash*_*hok 2 bash awk sed

我有一个带有以下行的文本文件说;

100 200 300
50 120 200
60 500 340
Run Code Online (Sandbox Code Playgroud)

我正在编写一个脚本来根据用户输入更改任何字段的值.如果用户在bash中给出no($ colno)列和行号($ rowno),我使用以下代码来确定要替换的确切字段.

awk -v i=$colno -v j=$rowno 'NR ==j {print $i}' file
Run Code Online (Sandbox Code Playgroud)

因此,如果用户将$ colno设为1,将$ rownno设为3,则可以在第3行(60)中找到$ 1字段.

现在我想用其他一些用户给定的值($ new_val)永久地替换这个值(60).

我怎么能用sed或awk做到这一点?这段代码将允许我使用用户指定的新值更改用户指定的任何字段.代码不应更改任何其他字段,即使具有相同的值.

请帮我.提前感谢你.

Ini*_*ian 6

只需用所需的值替换列,

colno=1
rowno=3

awk -v i=$colno -v j=$rowno  -v newvalue=20 'NR ==j {$i=newvalue}1' file
100 200 300
50 120 200
20 500 340
Run Code Online (Sandbox Code Playgroud)

该部分{$i=newvalue}1设置值$1,即从当前示例的第3行和第1列设置为的值newvalue.该{}1重建基于个人repalcements每一行.