我有一个带有以下行的文本文件说;
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做到这一点?这段代码将允许我使用用户指定的新值更改用户指定的任何字段.代码不应更改任何其他字段,即使具有相同的值.
请帮我.提前感谢你.
只需用所需的值替换列,
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每一行.