替换第5和第6个"字"在带有bash变量的文本文件中

时间:2013-09-21 23:56:34

标签: bash sed awk text-processing

这个问题扩展了我的上一个问题(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

2 个答案:

答案 0 :(得分:5)

awk -v n4="$new4" -v n5="$new5" '/^dataspecs/{$5=n4;$6=n5}7' file

答案 1 :(得分:1)

Kent的解决方案很棒。这是另一个涉及从awk

中直接访问shell变量的选项
awk '/^dataspecs/{$5=ENVIRON["new_v4"];$6=ENVIRON["new_v5"];}{print}' file.txt > newfile.txt