XPathの要素を調べるのに役立つLinuxシェルコマンドを探しています。
たとえば、次のようになります。
/a[@e=2]/bee/cee[@e<9]/@dee
それぞれ、3つのコマンドを返す必要があります。
a
[@e=2]
/bee/cee[@e<9]/@dee
後で、すべてのXpathを分析するために、このプロセスを繰り返すことができます。
sedと正規表現を使ってみましたが、できませんでした。
sed
奇妙なリクエスト...しかし、パターンを使用すると、これを非常に簡単に行うことができます^/\([-a-zA-Z0-9_]*\)\(\[[^]]*\]\)\(.*\)$
。リクエストしたセグメントは3つのキャプチャです。
zsh% data='/a[@e=2]/bee/cee[@e<9]/@dee'
zsh% pattern='^/\([-a-zA-Z0-9_]*\)\(\[[^]]*\]\)\(.*\)$'
zsh% sed "s#$pattern#\1#" <($data)
a
zsh% sed "s#$pattern#\2#" <($data)
[@e=2]
zsh% sed "s#$pattern#\3#" <($data)
/bee/cee[@e<9]/@dee
zsh%
パターンはリクエストに非常に特化しています。XPath式は、シェルで分解するのが非常に難しく、面倒で高価です。達成しようとしていることに応じて、言語の好みに応じて、シェルスクリプトをPython、Ruby、またはPerlのいずれかに翻訳したほうがよいでしょう。また、Bashの代わりにzshを使用することも検討してください。高度なスクリプティングにはるかに適していることがわかりました。