我有一个文件 xyz.sh
JAVA_OPTS="-Xmx3072M"
RESOLVED_HEAP_SIZE="2048M"
RESOLVED_OFF_HEAP_SIZE="256M"
预期 - 我想替换-Xmx3072M
为-Xmx4096M
,但不是强制的,值JAVA_OPTS="-Xmx3072"
总是相同,它可以是-Xmx1234
or -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 选项。