2017-03-16 583 views

回答

1

使用以下sed方法:

sed -Ei 's~(revision=")[^"]+"~\15678"~g' test.xml 

-E選項,允許擴展正expresssion

-i選項,允許修改文件到位

2

你也許可以得到sed完成(在非常簡單的情況下),但編輯xml這裏更好(也容易出錯) ls,如xmlstarlet。使用它很簡單:

xmlstarlet ed -u "//types/@revision" -v 5678 old.xml >new.xml 

編輯:

使用perl & XML::LibXML模塊Alernative溶液:

perl -MXML::LibXML -E '$d=XML::LibXML->load_xml(location=>q{file.xml});$_->setAttribute(q{revision},4567)for$d->findnodes(q{//types[@revision]});say $d' 
+0

''++爲正確的方法。 'sed'不推薦用於'XML'操作 – Inian

+0

謝謝,jm666,但是我在一個非常有限的設置下運行,只有sed可用。 – pepero

+0

@pepero YMMV,但是想知道哪個平臺(setup)沒有例如'perl'。 :)即使在rPI上也可能有'perl'。該解決方案與使用一些'XML/XPath' perl模塊類似...... – jm666