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

求助:sed命令替换--memory后任意数值未达预期的问题

解决sed替换--memory后任意数值的问题

我来帮你排查问题并给出正确的解决方法,你的命令里有几个明显的错误导致没有达到预期效果:

你的命令存在的问题

  1. 拼写错误:你把--memory写成了--memroy,sed根本找不到要匹配的内容
  2. 正则表达式范围过大:\b--memory.*会匹配从--memory开始到行尾的所有内容,这会把后面的反斜杠\也一起替换掉,不符合你的需求
  3. 替换字符串和标记位置错误:你把全局替换标记g写在了替换字符串里(\/g),这会导致替换后的内容多出/g,正确的位置应该放在sed替换命令的最后(s/.../.../g)

正确的sed命令

根据你的需求——替换--memory后面的任意数值为100g,这里分两种场景给出命令:

场景1:只替换整数数值(如20g、50g)

sed -i -E 's/(--memory\s+)[0-9]+g/\1100g/' a.txt
  • 解释:
    • (--memory\s+):用捕获组保留--memory和后面的一个/多个空格,后续用\1引用这部分内容
    • [0-9]+g:匹配整数数值加上单位g
    • 替换为\1100g:保留前面的--memory和空格,把数值替换成100g

场景2:支持替换小数数值(如20.5g、30.8g)

如果需要兼容带小数点的内存值,把正则里的数值匹配部分改成支持小数:

sed -i -E 's/(--memory\s+)[0-9]+(\.[0-9]+)?g/\1100g/' a.txt

跨平台注意事项

如果你是在macOS(BSD sed)上执行命令,-i选项需要加上空字符串来避免自动添加备份后缀:

sed -i '' -E 's/(--memory\s+)[0-9]+g/\1100g/' a.txt

测试示例

假设你的a.txt内容如下:

run.sh --memory 20g \
start.py --memory 30.5g \

执行命令后,文件内容会变成:

run.sh --memory 100g \
start.py --memory 100g \

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:16:20