ファイル内の特定の単語を置き換える整数

ファイル内の特定の単語を置き換える整数

xyz.shファイルがあります

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

-Xmx3072M期待される - に置き換えたいのですが、値が常に同じである-Xmx4096M必要はなく、または可能性があります。JAVA_OPTS="-Xmx3072"-Xmx1234-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/'

-Xmx1つ以上の10進数の後にオプションのk / K / m / M / g / Gサフィックスを-Xmx4G含む行は、他の最終JAVA_OPTSJavaオプションに触れることなく置き換えられます。

関連情報