Newsgroup: it.comp.software.newsreader
Titolo: ricerca ultimo post di un... poster

>>>>  
http://www.bb2002.it
 :)  <<<<<
........... [ al lavoro ] ...........

 ho sottomano xnews, mesnews e pan (a casa)
 
Perchè non Googlegruppi ?
vai sul gruppo, inserisci il nome del frequentatore e dovrebbe darteli 
in ordine cronologico
 
https://drive.google.com/file/d/0B98jwPbe7j25SVlEVDJVS2ZYU2c/view?usp=sharing
 
 
-- 
 
Mendez

 
 
perchè dovrei farlo a manina per ognuno dei 320+ autori :)


 perchè dovrei farlo a manina per ognuno dei 320+ autori :)
 
Aaaa..
e non avevi specificato :-)
 
-- 
 
Mendez

Il giorno Thu 16 Jul 2015 04:24:48p, *Mendez* inviava su 
it.comp.software.newsreader il messaggio 
news:mo8erh$t4o$
1...@speranza.aioe.org
. Vediamo cosa scrisse:

"ovviamente dovrebbe macinare tutto lo 
storico e fare un riepilogo :)"
 
io pensavo di essermi spiegato :)


 storico e fare un riepilogo :)
 
esporti il gruppo in formato mbox e dai:
 
        grep "^From " gruppo.mbox | sort -s -k2,2 -u
 
se invece all'ordine alfabetico delle email preferisci l'ordine originale
di arrivo dei messaggi:
 
        grep "^From " gruppo.mbox | awk '!visto[$2]++'
 
-- 
  np: no song

              Dec 21 21:32:34 2011



pkd@nihil:~$ date -d@1437222575
sab 18 lug 2015, 14.29.35, CEST
 
se vuoi incorporare il comando nello script (rallentandolo):
 
#!/bin/bash
sed -n '{
	s/.*poster="\([^"]*\).*date="\([0-9]*\).*/(date --date=@"\2" ;\
		 echo "\1") | paste -s -d "\t"/e
	/bytes=".*@/d
	s/&lt;/</
	s/&gt;/>/
	s/&quot;/"/g
	/@/p
	}
' $1 | awk -F\\t '!visto[$2]++'
 
 
 
bye
 
-- 
  np: no song

 vedo che hai usato Xnews
 
xnews e mesnews su windows in ufficio, pan su linux a casa
 
proverò qualche tuo suggerimento, magari a fine mese quando sarò in ferie: 
quella caterva di istruzioni va affrontata con calma... ;)
 
#!/bin/bash
sed -n '{
	s/.*poster="\([^"]*\).*date="\([0-9]*\).*/(date --date=@"\2" ;\
		 echo "\1") | paste -s -d "\t"/e
	/bytes=".*@/d
	s/&lt;/</
	s/&gt;/>/
	s/&quot;/"/g
	/@/p
	}
' $1 | awk -F\\t '!visto[$2]++'
 
 


 ferie: quella caterva di istruzioni va affrontata con calma... ;)
 
no prob, fai sapere se ti servono chiarimenti.
 
ciao
 

 pan
[...]
 
sto provando perl, applicato al problema è parecchio più efficiente degli
altri approcci.
 
in pan 0.139 selezioni il gruppo e dai `ctrl-d' `d'. poi fai dx sugli
articoli selezionati e salvi il tuo file .nzb (dovrebbe essere la 3^
voce).
 
lo script (in coda metto la versione commentata):
 
#!/usr/bin/perl
# 
estrai.pl
 
 
my %visto;
my @lista;
 
while (<STDIN>) {
   if (/(?:poster="(?<poster>[^"]+).*|date="(?<data>\d+).*){2}/) {
      push @lista, join("\t", $+{data}, $+{poster});
   }
}
 
foreach (sort { $b cmp $a } @lista) {
   if (!$visto{uc substr($_, 11)}++) {
      s/&lt;/</;
      s/&gt;/>/;
      s/&quot;/"/g;
      s/&apos;/'/g;
      print ~~localtime substr($_, 0, 10), substr($_, 10), "\n";
   }
}
 
salvalo nella tua home, poi lo rendi eseguibile:
 
pkd@nihil:~$ chmod +x 
estrai.pl
 
 
si lancia così:
 
pkd@nihil:~$ ./
estrai.pl
 < Untitled.nzb
 
o così:
 
pkd@nihil:~$ cat Untitled.nzb | ./
estrai.pl
 
 
se vuoi salvare l'output in un file:
 
pkd@nihil:~$ ./
estrai.pl
 < Untitled.nzb > icsn.txt
 
se l'ambiente grafico della tua distro supporta le desktop entry, puoi
creare un'icona su cui trascinare il file .nzb (adatta il path ed
eventualmente il nome del tuo desktop, da me si chiama Scrivania ed è
contenuto nella home):
 
pkd@nihil:~$ cat Scrivania/last_post.desktop 
[Desktop Entry]
Type=Application
Name=last_post
Exec=/bin/sh -c "./
estrai.pl
 < %f > Scrivania/last_post.txt"
Path=/home/pkd/
Icon=utilities-terminal
 
 
 
salut
 
 
 
--8<---------------cut here---------------start------------->8---
#!/usr/bin/perl
# 
estrai.pl
 
 
# dichiaro un hash per evitare doppioni nella lista dei poster
my %visto;
# dichiaro il vettore contenente le date e i poster
my @lista;
 
# ciclo iterativo che legge dallo standard input
while (<STDIN>) {
   # se incontro una riga con "poster=" e "date=" estraggo i valori
   # con "(?<nome>...)"
   if (/(?:poster="(?<poster>[^"]+).*|date="(?<data>\d+).*){2}/) {
      # aggiungo i dati al vettore, nella forma data-tab-poster
      push @lista, join("\t", $+{data}, $+{poster});
   }
}
 
# il "sort" dà il vettore "@lista" in ordine decrescente. scorro la
# nuova lista ordinata con "foreach" e ne stampo gli elementi,
# solamente se *non* ho incontrato in precedenza il poster (uso l'hash
# "%visto" per questo)
foreach (sort { $b cmp $a } @lista) {
   # ottengo il poster con "substr" (so che la data ha lunghezza fissa
   # di 10 caratteri); "++" va a incrementare di 1 l'ingresso
   # dell'hash che ha come indice il poster, restituendo il valore; se
   # l'ingresso non esiste, viene creato e si ha 0 come output. la
   # negazione "!" fa sì che sostituzioni e stampa vengano eseguiti
   # solo se "++" ha restituito 0.
   if (!$visto{uc substr($_, 11)}++) {
      # sostituisco markup con caratteri leggibili
      s/&lt;/</;
      s/&gt;/>/;
      s/&quot;/"/g;
      s/&apos;/'/g;
      # la stampa avviene convertendo la data in formato comprensibile
      print ~~localtime substr($_, 0, 10), substr($_, 10), "\n";
   }
}
--8<---------------cut here---------------end--------------->8---

 
 
mancano 12 ore (lavorative) alle ferie...
tengo duro e poi giovedì farò gli esperimenti
ci sentiamo dopo ferragosto
 
graZie



 
 
provato...
 
Can't open perl script "# 
estrai.pl
": File o directory non esistente
 
uhm...
 
 
-- 
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\ ... ¯\_(ツ)_/¯

 uhm...
 
è come se tu avessi messo sulla stessa riga le prime due, es.
 
#!/usr/bin/perl # 
estrai.pl
 
 
apri `
estrai.pl
' e dai un'occhiata. se invece non vedi così, potrebbe
essere un problema di fine linea... hai fatto c&p da file generati in
windows?
 
 


 
finite le ferie lontano da casa, quasi finite, ho ancora un paio di 
giorni: riprendo il discorso e verifico
 
no, windows non influenza i dati, faccio tutto in linux


 no, windows non influenza i dati, faccio tutto in linux
 
hai poi trovato un'altra soluzione? (just out of curiosity)
 
saluti
 

 
 
ho le due icone tuttora sul desktop ;) il file e lo script, ma non ho 
trovato il modo di rimetterci mano: quando le noto non ho tempo, quando ho 
tempo non sono davanti al pc
 
-- 
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
