我有一个名为“/java.conf”的文件,下面有一行
JAVA_OPTS="-Xms8250m -Xmx9786m -XX:MetaspaceSize=256m -XX:MinMetaspaceFreeRatio=20 -XX:MaxMetaspaceFreeRatio=40"
我想替换下面的行,
JAVA_OPTS="-Xms4092m -Xmx4092m -XX:MetaspaceSize=256m -XX:MinMetaspaceFreeRatio=20 -XX:MaxMetaspaceFreeRatio=40"
我试过以下,
JVM_HEAP_SIZE="-Xms4092m -Xmx4092m -XX:MetaspaceSize=256m -XX:MinMetaspaceFreeRatio=20 -XX:MaxMetaspaceFreeRatio=40"
sed -i "s/-Xms.*/$JVM_HEAP_SIZE/g" /java.conf
输出:
JAVA_OPTS="-Xms4092m -Xmx4092m -XX:MetaspaceSize=256m -XX:MinMetaspaceFreeRatio=20 -XX:MaxMetaspaceFreeRatio=40
问题: 在该行的末尾缺少双引号(“)。
期待 如果我在最后得到一个额外的,那么问题就解决了。
基本上我试图通过使用VARIABLE来改变“-Xms”和“-Xmx”值。 我需要使用变量,因为值可能会不时变化。
提前致谢!
答案 0 :(得分:0)
使用以下内容:
JVM_HEAP_SIZE='-Xms4092m -Xmx4092m -XX:MetaspaceSize=256m -XX:MinMetaspaceFreeRatio=20 -XX:MaxMetaspaceFreeRatio=40"'
sed -i "s/-Xms.*/$JVM_HEAP_SIZE/g" /java.conf
文本未在单引号内展开,因此双引号保持不变并替换sed
正则表达式匹配的引号。
答案 1 :(得分:0)
你的sed正则表达式匹配从“-Xms”到行尾的所有内容(包括末尾的双引号)。你只需要将双引号作为替换字符串的一部分:
sed -i "s/-Xms.*/${JVM_HEAP_SIZE}\"/" /java.conf
请注意,由于搜索模式与整行匹配,因此无需将“g”放在命令的末尾。