我目前有这行代码,在运行此脚本时需要每次增加一行。我想用awk来增加第三个字符串(570)。
'set t 570'
我目前要更改代码,但是我错过了结束引号。我还希望这只能作用于这个特定的(上面)行,但不确定将awk用于执行该操作的语法放在何处。
awk '/set t /{$3+=1} 1' file.gs >file.tmp && mv file.tmp file.gs
非常感谢您的投入。
答案 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
中的值在同一行中出现的次数更多,则会失败,因为它会替换所有值。