0

bash スクリプトで xml ファイルから属性を取得する必要がありますが、どちらも xmllint --xpath も xmlstarlet も使用できません。私が働いているサーバーでそれらを使用できないためです。

私はgrep、cut、sedで解決策を試しましたが、長い間良い解決策ではありません.

マシンにはgrep_xmlがあり、それを使用して要素にアクセスできますが、属性にアクセスしようとすると、「ハンドラーで認識されない式のエラー」が発生します

これは私のxmlファイルです

<?xml version="1.0" standalone="yes"?>
<p4codeline xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="p4codeline_1_1.xsd">
  <module name="kpreader" currentVersion="kpreader_1.1STD0" previousVersion="kpreader_1.0STD0">
    <codeline owner="undefined" path="//HEP/jcas/kpreader/trunk/...">
      <namingConvention/>
      <description>Main codeline for development</description>
      <rules>
        <rule>Develop on MAIN, and create a TAG codeline on release</rule>
        <rule>Never broke the build on the MAIN</rule>
      </rules>
    </codeline>
    <externals>
      <external viewPath="J2ep_BuildTools/..." codeLine="//CT/JAVA/J2ep_BuildTools/Source/tags/J2EP_BUILDTOOLS_1.6STD0/..." depotPath="."/>
    </externals>
  </module>
</p4codeline>

そして、bashまたはコマンドに基づくソリューションのみを使用して、コードラインのパス属性にアクセスする必要があります。

私は次のようなものを試しました

xml_grep -t '/p4codeline/module/codeline/@path' file.xml

そして、それは私に答えます

error: unrecognized expression in handler: '/p4codeline/module/codeline@path' at /usr/bin/xml_grep line 183
4

2 に答える 2

1

これらが通常行われるように、このコマンドは入力に大きく依存します

$ awk '/path/ {print $4}' FS='"' file.xml
//HEP/jcas/kpreader/trunk/...
于 2013-06-26T11:25:03.973 に答える