0

少し問題があり、どこから始めればよいかわかりません。次の情報を含むテキスト ファイルがあります。

MINI COOPER 2007, 30,000 miles, British Racing Green, full service history, metallic paint, alloys. Great condition. £5,995 ono Telephone xxxxx xxxxx

上記の情報を次の形式で入力する必要があります

    <advert>
    <manufacturer></manufacturer>
    <make></make>
    <model></make>
    <price></price>
    <miles></miles>
    <image></image>
    <desc><![CDATA[desc>
    <expiry></expiry> // Any point in the future
    <url></url> // Optional
</advert>
<advert>

出力は次のようになります。

    </advert>
<advert>
    <manufacturer>MINI</manufacturer>
    <make></make>
    <model></make>
    <price>5,995</price>
    <miles>30000</miles>
    <image></image>
    <desc><![CDATA[2007, British Racing Green, full service history, metallic paint, alloys. Great condition.Telephone xxxxxx xxxxxx]]></desc>
    <expiry>Todays date 13/05/2013</expiry>
    <url></url>
</advert>

任意のヘルプを作成していただければ幸いです。

4

2 に答える 2

0

以下は、少なくとも作業を進めるためのコード例です。次のように実行します。

awk -f script.awk file.txt

の内容script.awk:

{
    for (i=1;i<=NF;i++) {

        if ($i == "miles,") {
            miles = $(i - 1)

            $i = $(i - 1) = ""
        }

        if ($i ~ /£/) {
            price = substr($i, 2)

            $i = $(i + 1) = ""
        }
    }

    gsub(/ +/, " ");

    print "<advert>"
    print "\t<manufacturer>" $1 "</manufacturer>"
    print "\t<make></make>"
    print "\t<model></make>"
    print "\t<price>" price "</price>"
    print "\t<miles>" miles "</miles>"
    print "\t<image></image>"
    print "\t<desc><![CDATA[" $0 "]></desc>"
    print "\t<expiry>" strftime( "%d/%m/%Y" ) "</expiry>"
    print "\t<url></url>"
    print "</advert>"
}

結果:

<advert>
    <manufacturer>MINI</manufacturer>
    <make></make>
    <model></make>
    <price>5,995</price>
    <miles>30,000</miles>
    <image></image>
    <desc><![CDATA[MINI COOPER 2007, British Racing Green, full service history, metallic paint, alloys. Great condition. Telephone xxxxx xxxx]></desc>
    <expiry>13/05/2013</expiry>
    <url></url>
</advert>
于 2013-05-13T12:18:54.697 に答える