我有一个xml文件,如下所示:
<Exchange DateTime="17/09/2010 18:00:00">
<Content Percent="0.20" Price="63.862" Sign="1"/>
<Content Percent="0.25" Price="80.989" Sign="1"/>
<Content Percent="0.07" Price="1.4970" Sign="1"/>
<Content Percent="-0.31" Price="1.9530" Sign="-1"/>
</Exchange>
有4个变量叫做A,B,C,D。
我需要一个输出如下的脚本:
Last update: 17/09/2010 18:00:00
A: 63.862 (% 0.20)
B: 80.989 (% 0.25)
C: 1.4970 (% 0.07)
D: 1.9530 (% -0.31)
这可能吗?嗯,我真的需要我的工作:(请帮助我,ppl。我真的很感谢你的帮助!!
答案 0 :(得分:0)
#!/bin/bash
echo Last update: `grep -o 'DateTime="[^"]*"' $1 | sed -e 's/DateTime="\([^"]*\)"/\1/'`
grep -o 'Percent="[^"]*" Price="[^"]*"' $1 |
sed -e 's/Percent="\([^"]*\)" Price="\([^"]*\)"/: \2 (% \1)/'
这将显示
Last update: 17/09/2010 18:00:00
: 63.862 (% 0.20)
: 80.989 (% 0.25)
: 1.4970 (% 0.07)
: 1.9530 (% -0.31)
不知道IMKB,USD和EUR是什么意思,如果它们是基于Percent那么你可以使用这个
#!/bin/bash
echo Last update: `grep -o 'DateTime="[^"]*"' $1 | sed -e 's/DateTime="\([^"]*\)"/\1/'`
grep -o 'Percent="[^"]*" Price="[^"]*"' $1 |
sed -e 's/Percent="\([^"]*\)" Price="\([^"]*\)"/: \2 (% \1)/' |
sed -e 's/\(.*(% 0.20)\)/IMKB: \1/' |
sed -e 's/\(.*(% 0.07)\)/USD: \1/' |
sed -e 's/\(.*(% -0.31)\)/EUR: \1/'
上面会显示
Last update: 17/09/2010 18:00:00
IMKB: : 63.862 (% 0.20)
: 80.989 (% 0.25)
USD: : 1.4970 (% 0.07)
EUR: : 1.9530 (% -0.31)
我不太了解sed,所以可能只使用sed进行简单而短暂的溶解。
<强>更新强> 这是较短的版本
#!/bin/bash
echo Last update: `grep -o 'DateTime="[^"]*"' $1 | sed -e 's/DateTime="\([^"]*\)"/\1/'`
grep -o 'Percent="[^"]*" Price="[^"]*"' $1 | sed -e 's/Percent="\([^"]*\)" Price="\([^"]*\)"/: \2 (% \1)/' -e 's/\(.*(% 0.20)\)/IMKB\1/' -e 's/\(.*(% 0.07)\)/USD\1/' -e 's/\(.*(% -0.31)\)/EUR\1/' -e 's/\(.*(% 0.25)\)/SD\1/'
Last update: 17/09/2010 18:00:00
IMKB: 63.862 (% 0.20)
SD: 80.989 (% 0.25)
USD: 1.4970 (% 0.07)
EUR: 1.9530 (% -0.31)
答案 1 :(得分:0)
http://cnnturk.com/finans/ticker/endeks.asp是我获取XML文件的地方,但它没有新行,所以我在使用curl时无法使用你的解决方案:(
我的目的是提出一个shell脚本,它从上面提到的地址收集数据,然后显示有关证券交易所指数,黄金,美元和欧元的价格和价格变化的信息。
我需要使用curl,awk,sed和grep来完成这个,但我无法弄清楚是怎么回事,因为它需要复杂地使用shell编程技巧。
答案 2 :(得分:-1)
open CONFIG,"example.dat";
while(<CONFIG>)
{
if($.==1)
{
s/.*\"(\d+\/\d+\/\d+ \d+:\d+:\d+)\".*$/Last update: $1/g;
}
if($.==2)
{
s/.*\"(-?\d+\.?\d+).*\"(\d+\.?\d+)\".*$/A: $2 (% $1)/g;
}
if($.==3)
{
s/.*\"(-?\d+\.?\d+).*\"(\d+\.?\d+)\".*$/B: $2 (% $1)/g;
}
if($.==4)
{
s/.*\"(-?\d+\.?\d+).*\"(\d+\.?\d+)\".*$/C: $2 (% $1)/g;
}
if($.==5)
{
s/.*\"(-?\d+\.?\d+).*\"(\d+\.?\d+)\".*$/D: $2 (% $1)/g;
}
s/<\/exchange>//i;
print ;
}
close CONFIG;