2017-12-10 12 views
-1
<?xml version='1.0' encoding='utf-8'?> 
<widget id="io.ionic.starter" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> 
... 
</widget> 

sedを使用してウィジェットのIDとバージョンを置き換えるにはどうすればよいですか?シェルスクリプトのsedコマンドを使用してXMLファイルの属性を置き換えるにはどうすればよいですか?

+2

sedを使用してXMLファイルを処理しないでください。 XML対応のツールを使用します。 – choroba

+0

私はinbuilt関数を使用するという制約があります。私は複数のサーバーでそれを実行しているので – rakshans1

+0

制約を設定する人々に話してください。彼らは意味をなさない。 – choroba

答えて

1

SedはXMLを扱う正しいツールではありません。同じセマンティクスを維持しながら、属性は異なる順序または異なる行で表示される可能性があります。

XML対応ツールを使用してください。例えば、(現在は私によって維持XML::LibXMLラッパー)xshで、あなただけのxmlstarletで

open file.xml ; 
register-namespace w http://www.w3.org/ns/widgets ; 
set /w:widget/@id "new.id" ; 
set /w:widget/@version "0.0.2" ; 
save :b ; # :b creates a backup. 
+0

依存関係をインストールせずにこれを達成する必要があります。可能でしょうか? – rakshans1

+0

既にインストールされているものによって異なります。多くの同様のツールがあります。 XMLStarletでは、xmllintでもいくつかの機能が制限されています。 – choroba

+0

fresh linux ..と注文は常に同じです – rakshans1

1

を書き込むことができます。

xmlstarlet edit -N x='http://www.w3.org/ns/widgets' \ 
       --update "//x:widget/@id" --value "foo" \ 
       --update "//x:widget/@version" --value "bar" file.xml 

は出力:

<?xml version="1.0" encoding="utf-8"?> 
<widget xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0" id="foo" version="bar"> 
... 
</widget> 

あなたがしたい場合はファイルをインプレースで編集し、オプション-Lを追加します。

+0

この行の電子メールとhrefと値の変更方法著者名 rakshans1

+0

@ rakshans1:新しい質問を開始し、XMLファイルに名前空間( 'xmlns =" ... "')を使用しているかどうかを示すことをお勧めします。 – Cyrus

関連する問題