2013-08-23 58 views

回答

2

这将aaa取代/tmp/tmp/...

$ sed 's/\(.*=\)[^ ]* \(.*\)/\1 aaa \2/g' <<< "-Djava.util.logging.config.file=/tmp/tmp/tmp/config bla.bla" 
-Djava.util.logging.config.file= aaa bla.bla 

它 “拯救” 任何东西在\1=。然后将所有内容提取到一个空间。最后“保存”\2中的其余字符串。

该替换是通过回显\1 +“新字符串”+ \2完成的。

1

\s不受sed的支持。此外,必须对+进行反斜杠以获得其特殊含义。我也反斜线点,以防止它们匹配任何东西:

sed -e 's/logging\.config\.file=[^[:space:]]\+/logging\.config\.file\=\/new/g' 

,或者更短的

sed -e 's%\(logging\.config\.file=\)[^[:space:]]\+%\1/new%g' 
相关问题