そこで、使用したい Linux での xml 解析用のスクリプトをオンラインで見つけました。スクリプトがどのように機能するか、および自分で使用するために編集する方法を理解するための助けを得たいと思っていました。
これがスクリプトです(クレジット)
#!/bin/bash
cat $1 | awk '
START { pos=1; xml=$0 len=length(xml); endp=1 }
{ while(pos <= len) {
if(substr(xml,pos,7) == "<title>")
{
pos=pos+7;
endp=pos;
while((substr(xml,endp,8) != "</title>") && (endp < len))
{
endp++;
}
print " ",substr(xml,pos,endp-pos)," * ";
pos=endp+7;
}
pos++; } }'
使用する xml データの簡単なサンプルを次に示します。
タグの両側にある余分な文字を既に取り除き、スクリプトを次のように変更して、いくつかの調整を行いました。
#!/bin/bash
cat $1 | awk '
START { pos=1; xml=$0 len=length(xml); endp=1 }
{ while(pos <= len) {
if(substr(xml,pos,16) == "<sport><![CDATA[")
{
pos=pos+16;
endp=pos;
while((substr(xml,endp,11) != "]]></sport>") && (endp < len))
{
endp++;
}
print "",substr(xml,pos,endp-pos),"";
pos=endp+10;
}
pos++; } }'
したがって、このスクリプトを使用すると、この結果を含むプレーンテキストファイルが残ります
Women's Soccer
Men's Soccer
Women's Soccer
最終的には、スクリプトに次のように出力させたいと思います
Women's Soccer Away @ South Carolina (Exhibition) at 7:00 PM
Men's Soccer Home vs. Ohio State at 7:00 PM
Women's Soccer Away @ William and Mary at 7:00 PM
疑問に思っている方のために説明すると、これは解析スクリプトを呼び出すシェルです (ファイル名と場所は無視してください)。
wget -O rss.xml http://en-us.fxfeeds.mozilla.com/en-US/firefox/headlines.xml
~dsl/bin/rssparse! rss.xml > headlines_$$.tmp
cd /tmp/ldmtrx
split --lines=30 /tmp/headlines_$$.tmp ldmtrxnews
cd /tmp
rm headlines_$$.tmp rss.xml
大変ありがたいのですが、誰かがこのタスクを完了してくれるとは思っていません. このスクリプトを別の要素で実行し、両方の要素を出力する方法がわかりません (たとえば<sport>
、 と<homeaway>
)。スクリプトを再度実行することはできますが、要素は別の行に出力されます。
<date>
最後に、一致する今日の日付を持たないすべてのデータを除外する方法を知りたいです。ご協力いただきありがとうございます。