Télécharger et compter

Tâche: télécharger un fichier Web, compter les lignes qui commence par un nombre et faire la somme de ses nombres.

wget + awk

wget -q -O - "http://{DOMAIN.COM}/fichier.html" | awk 'BEGIN {sum=0} /^([0-9]+)/ { sum+=$1 } END {print sum }'

wget + perl

wget -q -O - "http://{DOMAIN.COM}/fichier.html" | perl -e '$sum=1; while(<STDIN>) { $sum+=$1 if /^(\d+)/; } print $sum'

perl

#!/usr/bin/env perl
# file: downloadcount.pl #
use strict;
use warnings;
use LWP::Simple;
my $url = $ARGV[0];
my $content = get($url) or die;
open my $fh, '<', \$content or die;
my $sum = 0;

while(<$fh>) {
  $sum += $1 if /^(\d+)/;
}
print $sum;
close $fh or die;
# end file #

perl downloadcount.pl http://{DOMAIN.COM}/fichier.html

PHP

<?php
$url = $argv[1];
$lines = file($url);
$sum = 0;
foreach($lines as $line) {
  $sum += intval($line);
}
echo $sum;
?>

php downloadcount.php http://{DOMAIN.COM}/fichier.html

Node.js

var http = require('http');
var url = require('url');

var urlInput = url.parse(process.argv[2]);
var req = http.get(urlInput, function(res) {
  var data = '';
  res.setEncoding('UTF-8');
  res.on('data', function(chunk) {
    data+=chunk;
  })
  res.on('end', function() {
    var lines = data.split('\n');
    var sum = 0;
    for(var i = 0; i < lines.length; i++) {
      var n = parseInt(lines[i],10);
      if (!isNaN(n)) { sum += n; }
    }
    console.log(sum);
  })
}).on('error', function(e) {
});

nodejs downloadcount.js http://{DOMAIN.COM}/fichier.html