0

这个问题扩展了我的最后一个问题(搜索特定的文本文件行,最多替换某个字符)。在用户@anubhava 的帮助下,我能够搜索以 dataspecs 开头的行,并将其转换为

dataspecs v1 v2 v3 v4 v5 ! blah

dataspecs $new_val ! blah

但是,我现在需要能够保留变量v1 v2 v3(我不知道它们的实际值),并将 and 替换v4v5bash 变量$new_v4$new_v5. 所以我的新行现在看起来像这样:

dataspecs v1 v2 v3 new_v4 new_v5 ! blah

4

2 回答 2

5
awk -v n4="$new4" -v n5="$new5" '/^dataspecs/{$5=n4;$6=n5}7' file
于 2013-09-22T00:00:21.970 回答
1

肯特的解决方案很棒。这是另一个涉及从内部直接访问 shell 变量的选项awk

awk '/^dataspecs/{$5=ENVIRON["new_v4"];$6=ENVIRON["new_v5"];}{print}' file.txt > newfile.txt
于 2013-09-22T00:08:52.867 回答