2012-02-20 31 views
8

Tôi muốn một lớp lót đơn giản với sed để cập nhật giá trị thuộc tính java. Mà không biết những gì các thiết lập hiện tại của tài sản java là gì, và nó có thể rỗng)Sử dụng sed để cập nhật thuộc tính trong tệp thuộc tính java

trước

example.java.property=previoussetting 

sau

example.java.property=desiredsetting 
+0

[Bạn đã làm gì cố gắng?] (Http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

Trả lời

7

Giả sử Linux Gnu sed, 1 giải pháp sẽ được

Chỉnh sửa đã thoát '.' chars ví dụ: s/example\.java.../ mỗi bình luận chính xác bằng cách Kent

replaceString=desiredsetting 
sed -i "s/\(example\.java\.property=\).*\$/\1${replaceString}/" java.properties 

Nếu bạn sed không tôn vinh những -i, sau đó bạn phải quản lý các file tmp, ví dụ:

sed "s/\(example\.java\.property=\).*\$/\1${replaceString}/" java.properties > myTmp 
    /bin/mv -f myTmp java.properties 

Tôi hy vọng điều này sẽ giúp.

+0

-1 mặc dù OP có chấp nhận câu trả lời này. 'dấu chấm' không được thoát, vì vậy nó có nghĩa là 'BẤT KY nhân vật' nó có thể thay đổi thuộc tính sai trong tệp. Nguy hiểm! – Kent

+0

@Kent: Nguy hiểm có vẻ như là một thuật ngữ mạnh. Nhưng cảm ơn vì đã giúp bài đăng của tôi tốt hơn. Hoofamon: xin vui lòng xem bài viết sửa đổi để cải thiện thay thế về tài sản java của bạn. Chúc mọi người may mắn. – shellter

9

này sẽ cập nhật tập tin của bạn:

sed -i "/property.name=/ s/=.*/=newValue/" yourFile.properties 

này sẽ in thành một tập tin mới

sed "/property.name=/ s/=.*/=newValue/" yourFile.properties > newFile.properties 

Đây là cách bạn cập nhật nhiều tính

sed -i -e "/property.name.1=/ s/=.*/=newValue1/" -e "/property.name.2=/ s/=.*/=newValue2/" yourFile.properties 

Gurus của sed có thể đổ lỗi cho tôi vì đây không phải là cách thích hợp nhất để làm điều này (ví dụ tôi đã không thoát khỏi các dấu chấm) nhưng tôi thấy đây là tùy chọn tốt nhất khi bạn không muốn hy sinh khả năng đọc.

Dưới đây là cuộc thảo luận mở rộng: How do I use sed to change my configuration files, with flexible keys and values?

Các vấn đề liên quan