2013-08-23 56 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' 
相關問題