相关疑难解决方法(0)

如何从shell执行XPath单行程序?

对于Ubuntu和/或CentOS,是否有一个包,它有一个命令行工具,可以执行XPath单线程,foo //element@attribute filename.xml或者foo //element@attribute < filename.xml逐行返回结果?

我正在寻找一些可以让我只是apt-get install foo或者yum install foo然后只是开箱即用,没有包装或其他必要的改编的东西.

以下是一些接近的事例:

引入nokogiri.如果我写这个包装器,我可以用上面描述的方式调用包装器:

#!/usr/bin/ruby

require 'nokogiri'

Nokogiri::XML(STDIN).xpath(ARGV[0]).each do |row|
  puts row
end
Run Code Online (Sandbox Code Playgroud)

XML :: XPath的.可以使用这个包装器:

#!/usr/bin/perl

use strict;
use warnings;
use XML::XPath;

my $root = XML::XPath->new(ioref => 'STDIN');
for my $node ($root->find($ARGV[0])->get_nodelist) {
  print($node->getData, "\n");
}
Run Code Online (Sandbox Code Playgroud)

xpath来自XML :: XPath返回太多噪音,-- NODE --attribute = "value".

xml_grep 来自XML :: Twig无法处理不返回元素的表达式,因此无法在不进一步处理的情况下提取属性值.

编辑:

echo cat //element/@attribute | xmllint --shell filename.xml返回类似的噪音xpath …

xml shell xpath cross-platform

182
推荐指数
7
解决办法
12万
查看次数

grep -P不再有效.我怎样才能重写我的搜索?

看起来OSX的新版本不再支持grep -P,因此我的一些脚本停止工作.

var1=`grep -o -P '(?<=<st:italic>).*(?=</italic>)' file.txt`
Run Code Online (Sandbox Code Playgroud)

我需要将grep捕获到变量,我需要使用零宽度断言,以及 \K

var2=`grep -P -o '(property:)\K.*\d+(?=end)' file.txt`
Run Code Online (Sandbox Code Playgroud)

任何替代方案将不胜感激.

macos shell perl

74
推荐指数
6
解决办法
3万
查看次数

从简单的XML文件中提取数据

我有一个包含以下内容的XML文件:

<?xml version="1.0" encoding="utf-8"?>
<job xmlns="http://www.sample.com/">programming</job>
Run Code Online (Sandbox Code Playgroud)

我需要一种方法来提取<job..> </job>标签中的内容,在这种情况下是programmin.这应该在linux命令提示符下完成,使用grep/sed/awk.

xml bash awk grep sed

40
推荐指数
7
解决办法
9万
查看次数

标签 统计

shell ×2

xml ×2

awk ×1

bash ×1

cross-platform ×1

grep ×1

macos ×1

perl ×1

sed ×1

xpath ×1