Bash

是否有任何工具可以讓我檢查 XML 節點的字元串長度

  • February 26, 2016

我想知道是否有任何工具可以做到這一點:

範例 XML:

<node1>
<Data>
<Unique>123456789-1234567891</Unique> 
</Data>
</node1>

我希望搜尋的是 Unique 小於 10 的位置 - 如果 Right 小於 9 從 - 到右。

所以搜尋會將此記錄/節點標記為問題

<Unique>6789-1234567891</Unique>

我試圖使用 Grep 來做到這一點,但是我已經開始在 Bash 中使用各種 XML 工具,所以我想我可能會先問一個特定工具的問題。

xmllint 是我正在使用的一個。

(很抱歉給你發垃圾郵件)在 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

grep -nP "<Unique>(\d{1,9}-\d+|\d+-\d{1,8})</Unique>" ex.xml

  • -n輸出錯誤 Uniques 的行號

引用自:https://unix.stackexchange.com/questions/265944