You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用awk将唯一Key下一行的版本号数值加1?

嘿,这里有个简洁的awk命令刚好能满足你的需求,完全适配临时工作区的使用场景:

awk '/<key>UniqueKey<\/key>/{f=1;print;next} f&&/<string>/{sub(/[0-9]+/,++$2);f=0}1' your_file

命令拆解(帮你理解为啥这么写):

  • 当匹配到包含<key>UniqueKey</key>的行时:设置一个标记f=1,先把这行原样打印出来,然后用next直接跳到下一行,避免后续逻辑干扰。
  • 当标记f是1(说明上一行就是我们要找的UniqueKey行),且当前行包含<string>时:用sub函数把行里的数字替换成加1后的数值,然后把标记f重置为0,防止误改其他行。
  • 最后的1是awk的小技巧,代表“打印所有行”——除了已经手动打印过的UniqueKey行,其他行都会被正常输出。

测试示例:

原始文件内容:

<key>UniqueKey</key> <string>100</string>
<key>OtherRandomKey</key> <string>500</string>

执行命令后输出:

<key>UniqueKey</key> <string>101</string>
<key>OtherRandomKey</key> <string>500</string>

可以看到只有UniqueKey对应的版本号被加1,其他<string>行完全不受影响,完美符合你的要求~

内容的提问来源于stack exchange,提问作者user9843902

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:15:43