如何从unix中的xml文件中提取精确值

时间:2013-08-19 13:01:00

标签: shell unix

我在下面的示例文件中有超过1000个条目。我想提取会话ID。 示例输出应为sessionId="1308130606029610103"

<cdr-data>
    <cdr>
        <networkInfo payer="830459" payerType="0" pdpAddress="2" pdpType="0"
                     ratingGroup="2" redirectionCode="0" requestType="1006"
                     sequenceNumber="12" serviceIdentifier="0"
                     sessionId="1308130606029610103" sgsnAddress=""
                     sgsnMccMnc="" specialLocationClassId="0" spendControlId="0"
                     tariffToken="0" timeZone="" unitType="2"/>

    </cdr>
    <cdr-data>

2 个答案:

答案 0 :(得分:1)

选项是使用grep

grep -Po "sessionId=[^\s]*" filename

答案 1 :(得分:1)

xmlstarlet允许您从命令行运行XPath表达式。类似的东西:

xmlstarlet sel -t -v "/cdr-data/cdr/networkInfo/@sessionId" yourfile.xml