在Awk中附上单引号

时间:2015-05-25 22:00:52

标签: awk

我目前有这行代码,在运行此脚本时需要每次增加一行。我想用awk来增加第三个字符串(570)。

'set t 570'

我目前要更改代码,但是我错过了结束引号。我还希望这只能作用于这个特定的(上面)行,但不确定将awk用于执行该操作的语法放在何处。

awk '/set t /{$3+=1}  1' file.gs >file.tmp && mv file.tmp file.gs

非常感谢您的投入。

1 个答案:

答案 0 :(得分:3)

使用sub()对字符串本身执行替换:

$ awk '/set t/ {sub($3+0,$3+1,$3)} 1' file
'set t 571'

这会查找$3中的值并将其替换为+1。为了避免替换所有$3并确保引号在字符串中保留,我们说$3+0以便它只评估数字,而不是引用:

$ echo "'set t 570'" | awk '{print $3}'
570'
$ echo "'set t 570'" | awk '{print $3+0}'
570

注意如果$3中的值在同一行中出现的次数更多,则会失败,因为它会替换所有值。