在Awk中包含单个报价

在Awk中包含单个报价,awk,Awk,我目前有这行代码,在运行这个脚本时,每次需要增加一行代码。我想在增加第三个字符串(570)时使用awk 我目前有此更改代码,但我缺少结束引号。我还希望这只作用于这个特定的(上面的)行,但是我不确定awk使用的语法放在哪里 awk '/set t /{$3+=1} 1' file.gs >file.tmp && mv file.tmp file.gs 非常感谢您的输入。使用sub()替换字符串本身: $ awk '/set t/ {sub($3+0,$3+1,$3)} 1

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

我目前有此更改代码,但我缺少结束引号。我还希望这只作用于这个特定的(上面的)行,但是我不确定awk使用的语法放在哪里

awk '/set t /{$3+=1}  1' file.gs >file.tmp && mv file.tmp file.gs
非常感谢您的输入。

使用
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
中的值在同一行中出现更多次,则此操作将失败,因为它将替换所有值

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