次xmlstarletコマンド:私のファイルはdoc/ptxt
を多く含んでいるため更新の.propertiesファイル
./xmlstarlet-1.5.0/xml.exe fo --dropdtd $filename | ./xmlstarlet-1.5.0/xml.exe sel -t -m "//DOC//PTXT" -v "concat(./@ID,' ', .)"
は、複数の結果を返します。私は各出力で何かをする必要があります、より明示的に私は各ptxt値で何かをする必要があります。 XMLstarlet
のすべての結果をループするにはどうすればよいですか?私はid-value
ペアを含む別のファイルを持っていると私はそれらのペアを一致させる必要があるため、
my.id.one Text I need
my.id.two Text I also need
my.id.three Surprisingly I need this text too
と私は必要なのかもしれない二つの変数の各id-text
ペアを持つことであるid
とtext
:
私の出力は次のようになります。
アップデート1:
私は何をする必要があるかの具体的な例: 私はファイルX.xml
を持っているとY.properties
ファイルX.xml
をファイルには、以下の構造を有する:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE DOC SYSTEM "ts.dtd">
<?xml-stylesheet type="text/css" href="ts.css"?>
<DOC LOCALE="en-US">
<PTXT ID="text.something">Open door</PTXT>
<PTXT ID="text.something.else">Open another door</PTXT>
<PTXT ID="text.whatever">Close all</PTXT>
</DOC>
ファイルY.properties
があり以下の構造:
text.something=Open window
text.something.else=Open another door
私が期待した結果が、この内容でY.properties
です:行うには
text.something=Open door
text.something.else=Open another door
text.whatever=Close all
:
- を
value
場合id
からX.xml
にはY.properties
でkey
からvalue
と異なる、value
key
からでY.properties
を更新する必要があります。 X.xml
でid
からはY.properties
でkey
からvalue
と同じであるvalue
場合X.xml
からid
はY.properties
でkey
として存在していない場合は、何も- に行われるべきではない、それは
Y.properties
にX.xml
からそのvalue
を追加する必要があります
現在のシェルコードは、
です。現在のところ、X.xmlからすべてのid/valueを取り出し、標準出力に出力します。 for
はおそらく疑いがありますが、私はこのコードを実行するために複数のX.xml
とY.properties
があるので、そこにあります。
問題1: @janos私は以下の問題があります。なぜ私は本当に理解できません。それはすべて正常に動作しますが、それらのほとんどはしません。例: XXML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE DOC SYSTEM "ts.dtd">
<?xml-stylesheet type="text/css" href="ts.css"?>
<DOC>
<PTXT ID="a.b.c.d" CONTEXT="label"><NTI>Text</NTI></PTXT>
</DOC>
Y.properties:
a.b.c.d=Text
と私の出力は次のようになります。私は本当に何が起こっているのか理解していないよう
a.b.c.d=
Text=
=
は、あなたが私を助けてください。 out.properties
my.id=Öffnen Express WebTools
my.id=\u00D6ffnen Express WebTools
:
問題2: 次入力有する:で X.xmlを
my.id = \u00D6ffnen Express WebTools
とY.properties
<PTXT ID="my.id" CONTEXT="">Öffnen <NTI>Express WebTools</NTI></PTXT>
結果
代わり
my.id=Öffnen Express WebTools
サンプル入力と希望する出力を表示してください:https://stackoverflow.com/help/mcve –
これは疑問の続きですhttps://stackoverflow.com/questions/47393839/extract-value-from-xml -in-shell/47393943?noredirect = 1#comment81775824_47393943。各出力項目をどのように処理すべきかを精緻化してください。 – RomanPerekhrest
まあ、各出力は私にそのIDのテキストを与えてくれます。私は別のファイルでそのIDを検索して、そのテキストが正しいかどうかをチェックすることができます(正しいことを意味します)。 – Robert