我正在寻找一些 linux shell 命令来帮助我检查 XPath 的元素。
例如,给定:
/a[@e=2]/bee/cee[@e<9]/@dee
我需要分别返回三个命令:
a
[@e=2]
/bee/cee[@e<9]/@dee
后来我可以重复这个过程,以便分析所有的Xpath。
我试过使用sed和正则表达式,但我做不到。
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。我发现它更适合高级脚本。