替换文件中特定单词的整数

替换文件中特定单词的整数

我有一个文件 xyz.sh

JAVA_OPTS="-Xmx3072M"  
RESOLVED_HEAP_SIZE="2048M"  
RESOLVED_OFF_HEAP_SIZE="256M" 

预期 - 我想替换-Xmx3072M-Xmx4096M,但不是强制的,值JAVA_OPTS="-Xmx3072"总是相同,它可以是-Xmx1234or -Xmx5120

答案1

尝试这个,

sed -e '/JAVA_OPTS/ s/".*"/"-Xmx4096M"/' test453

JAVA_OPTS="-Xmx4096M"  
RESOLVED_HEAP_SIZE="2048M"  
RESOLVED_OFF_HEAP_SIZE="256M"
  • 搜索匹配项JAVA_OPTS
  • ".*"将替换双引号之间的任何模式"-Xmx4096M"
  • 如果您想编辑该文件,请替换-e-i

答案2

sed '/JAVA_OPTS/s/-Xmx[[:digit:]]\{1,\}[kKmMgG]\{0,1\}/-Xmx4G/'

将替换-Xmx后跟一个或多个十进制数字,后跟可选的 k/K/m/M/g/G 后缀-Xmx4G的行包含JAVA_OPTS不触及任何其他最终 java 选项。

相关内容