これを行うためのツールがあるかどうか疑問に思います。
XMLの例:
<node1>
<Data>
<Unique>123456789-1234567891</Unique>
</Data>
</node1>
私が検索したいのは、左から-まで10未満のユニークで、右が-から右に9未満の場合です。
したがって、検索ではこのレコード/ノードに問題があるとマークされます。
<Unique>6789-1234567891</Unique>
Grepを使ってやろうとしていますが、BashでさまざまなXMLツールを使い始めたので、特定のツールについて最初にこの質問をしたいと思います。
xmllintは私が使用するものです。
答え1
(スパムして申し訳ありません)PerlでXMLパーサーを使用する
(必要な場合sudo cpan XML::DT
:)
#!/usr/bin/perl
use XML::DT;
my $file = shift;
# $c - contents after child processing
print dt(
$file,
'Unique' => sub{$c =~ s/^(\d{1,9}-\d+|\d+-\d{1,8})$/FIXME:$1/; toxml },
)
この場合、「FIXME」コメントを含むXMLを取得します。
答え2
grep -nP "<Unique>(\d{1,9}-\d+|\d+-\d{1,8})</Unique>" ex.xml
-n
エラーUniquesの行番号を出力します。