0


我正在寻找一些 linux shell 命令来帮助我检查 XPath 的元素。
例如,给定:

/a[@e=2]/bee/cee[@e<9]/@dee

我需要分别返回三个命令:

a
[@e=2]
/bee/cee[@e<9]/@dee

后来我可以重复这个过程,以便分析所有的Xpath。

我试过使用sed和正则表达式,但我做不到。

4

1 回答 1

0

sed奇怪的请求...但是您可以使用该模式轻松完成此操作^/\([-a-zA-Z0-9_]*\)\(\[[^]]*\]\)\(.*\)$。您请求的段是三个捕获。

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 表达式很难在 shell 中拆分 - 既麻烦又昂贵。根据您要完成的工作,您最好根据语言偏好将 shell 脚本翻译成 Python、Ruby 或 Perl。您可能还想看看使用zsh而不是 Bash。我发现它更适合高级脚本。

于 2012-12-22T13:27:21.320 回答