1

http://www.cpubenchmark.net/cpu_list.phpページを取得しました。名前、ランク、ベンチマークスコアを使用して特定のCPUを抽出したいと思います。

例(「IntelCorei5」):

Intel Core i5-3450 @ 3.10GHz - Score: 3333 - Rank: 1
Intel Core i5-3450S @ 2.80GHz - Score: 2222 - Rank: 2
Intel Core i5-2380P @ 3.10GHz - Score: 1111 - Rank: 3
...

どうすればbashでそれを行うことができますか?そのようなものから始めようとしました(CPUフィルタリングなし-それがどのように機能するかわかりません):

#!/bin/sh
curl http://www.cpubenchmark.net/cpu_list.php | grep '^<TR><TD>' \
| sed \
    -e 's:<TR>::g'  \
    -e 's:</TR>::g' \
    -e 's:</TD>::g' \
    -e 's:<TD>: :g' \
| cut -c2- >> /home/test.txt

出力は次のようなものです。

<A HREF="cpu_lookup.php?cpu=686+Gen&amp;id=1495">686 Gen</A> 288 1559 NA NA
<A HREF="cpu_lookup.php?cpu=AMD+A10-4600M+APU&amp;id=10">AMD A10-4600M APU</A> 3175 388 NA NA
<A HREF="cpu_lookup.php?cpu=AMD+A10-4655M+APU&amp;id=11">AMD A10-4655M APU</A> 3017 406 NA NA
4

2 に答える 2

4

追加のプログラムをダウンロードしたい場合は、私のXidelを使用できます。

すべてのCPU:

xidel http://www.cpubenchmark.net/cpu_list.php -e '//table[@id="cputable"]//tr/concat(td[1], " - Score: ", td[2], " - Rank: ", td[3])'

Intelで始まるもの...:

xidel http://www.cpubenchmark.net/cpu_list.php -e '//table[@id="cputable"]//tr[starts-with(td[1], "Intel Core i5")]/concat(td[1], " - Score: ", td[2], " - Rank: ", td[3])'

ランク順に並べ替えることもできます(これまでその機能を使用したことはありません)。

xidel http://www.cpubenchmark.net/cpu_list.php -e 'for $row in //table[@id="cputable"]//tr[starts-with(td[1], "Intel Core i5")] order by $row/td[3] return $row/concat(td[1], " - Score: ", td[2], " - Rank: ", td[3])' --extract-kind=xquery
于 2012-12-29T00:13:59.423 に答える
0

ページの現在の形式に厳密に合わせたbashソリューション:

#! /bin/bash

function nextcell
{
    cell=${line%%</TD>*}
    # remove closing link tag if any
    cell=${cell%</?>}
    cell=${cell##*>}
    line=${line#*</TD>}
}

while read line
do
    if [[ ! "$line" =~ cpu_lookup.php ]]
    then
        continue
    fi
    nextcell
    echo -n "$cell"
    nextcell
    echo -n " - Score: $cell"
    nextcell
    echo " - Rank: $cell"
done
于 2012-12-29T00:38:56.610 に答える