XML标签到bash变量

问题描述 投票:-3回答:1

我使用的是下面的curl命令。

curl  -u $username:$password --silent "https://mail.google.com/mail/feed/atom" | \tr -d '\n'

得到一个像这样的样本输出:

<?xml version="1.0" encoding="UTF-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#">

<title>Gmail - Inbox for [email protected]</title>
<tagline>New messages in your Gmail Inbox</tagline>
<fullcount>13</fullcount>


<entry>
    <title>Backup Status</title>
    <summary>Backup Successful </summary>
    <link rel="alternate" href="https://mail.google.com/[email protected]&amp;message_id=1715ed8b619b4e4b&amp;view=conv&amp;extsrc=atom" type="text/html"/>
    <modified>2020-04-07T19:53:47Z</modified>
    <issued>2020-04-07T19:53:47Z</issued>
    <id>tag:gmail.google.com,2004:1663333312794531403</id>
    <author>
        <name>Carbonite</name>
        <email>[email protected]</email>
    </author>
</entry>
<entry>
    <title>Backup Status Report</title>
    <summary>Dear IDrive User, Ref : UserName....</summary>
    <link rel="alternate" href="https://mail.google.com/[email protected]&amp;message_id=1715ed8b619b4e4b&amp;view=conv&amp;extsrc=atom" type="text/html"/>
    <modified>2020-04-07T19:53:47Z</modified>
    <issued>2020-04-07T19:53:47Z</issued>
    <id>tag:gmail.google.com,2004:1663333312794531403</id>
    <author>
        <name>no-reply</name>
        <email>[email protected]</email>
    </author>
</entry>    

<entry>
    <title>Notification</title>
    <summary>Notification Status</summary>
    <link rel="alternate" href="https://mail.google.com/[email protected]&amp;message_id=1715ed8b619b4e4b&amp;view=conv&amp;extsrc=atom" type="text/html"/>
    <modified>2020-04-07T19:53:47Z</modified>
    <issued>2020-04-07T19:53:47Z</issued>
    <id>tag:gmail.google.com,2004:1663333312794531403</id>
    <author>
        <name>Software Notification</name>
        <email>[email protected]</email>
    </author>
</entry>

<entry>
  ............etc
</entry>

我想提取所有的值 <entry\title>\tr -d '\n' To get a sample output like this: <entry\summary>Try something like the following:<entry\author\name>First, to use xmlstarlet to assign values to variables, use these:

In your sample xml, there are 3 values (from 3 emails) assigned to each variable. To access those in, for example,

use:<title>Output:<summary>,<name> 并在bash脚本中把它们设置为变量。

我如何将这些值设置为变量?

我想从xml中提取值,并将它们发送到变量中,比如说

到$title ,

到$summary和

到$name。
xml awk sed grep xmlstarlet
1个回答
1
投票

$summary = 电子邮件正文

$name = from name

title=$(xmlstarlet sel -t -v "//entry/title" input.xml)
name= $(xmlstarlet sel -t -v "//entry/author/name" input.xml)
summary = $(xmlstarlet sel -t -v "//entry/summary" input.xml)

$title

for val in "${title[@]}";
do
  printf "$val\n"
done

我正在使用下面的curl命令:curl -u $username:$password --silent "https:/mail.google.commailfeedatom"

© www.soinside.com 2019 - 2024. All rights reserved.