我想提取xml文件的text属性中包含的字符串

时间:2017-06-21 05:29:15

标签: xml bash shell

我的xml文件就像这样

  <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="* Please enter Username" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="eQB-cs-m5N">

使用sed我试图将文本提取为

sed -n 's/.*text="\([^\"]*\)/\1/p' KHLLoginController.xml

我试图在搜索text =&#34之后匹配模式;直到遇到第一个双引号(&#34;)

而不是所需的输出是&#34; *请输入用户名&#34;

我得到的整行包含上述模式

  • 请输入用户名&#34; lineBreakMode =&#34; tailTruncation&#34; baselineAdjustment =&#34; alignBaselines&#34; adjustsFontSizeToFit =&#34; NO&#34; ID =&#34; EQB-CS-M5N&#34;&GT;

2 个答案:

答案 0 :(得分:1)

试试这个

 sed -n 's/.*text=\("\([^\"]*\)"\).*/\1/p' KHLLoginController.xml

For Power Shell

$input_path = ‘d:\input.txt’
$output_file = ‘d:\output.txt’
$regex = ‘(text=)("([^"]|"")*")’
select-string -Path $input_path -Pattern $regex -AllMatches | % { $_.Matches } | % { $_.Value } > $output_file

答案 1 :(得分:0)

sed 's/.*text="\([^\"]*\).*/\1/' filename

-np没有必要