这个问题扩展了我的上一个问题(Search for specific line of text file, replace up to a certain character)。在@anubhava用户的帮助下,我能够搜索以dataspecs开头的行,并从
转换它。 dataspecs v1 v2 v3 v4 v5 ! blah
到
dataspecs $new_val ! blah
但是,我现在需要能够保留变量v1
v2
v3
(我不知道它们的实际值),并替换v4
和{ {1}}使用bash变量v5
和$new_v4
。所以我的新系列现在看起来像这样:
$new_v5
答案 0 :(得分:5)
awk -v n4="$new4" -v n5="$new5" '/^dataspecs/{$5=n4;$6=n5}7' file
答案 1 :(得分:1)
Kent的解决方案很棒。这是另一个涉及从awk
awk '/^dataspecs/{$5=ENVIRON["new_v4"];$6=ENVIRON["new_v5"];}{print}' file.txt > newfile.txt