PDA

Visualizza versione completa : [TXT] ricerca di righe doppie in un file di testo .txt


Lionsquid
23-02-2006, 13.12.05
come da oggetto ho la necessità di trovare in un file di testo le righe doppie, solo le righe!

lo scopo è quello di evitare di inserire doppioni nel file HOSTS. E' molto facile che accada quando le righe sono diverse centinaia, non si riesce a dare uno sguardo omnicomprensivo...

l'alternativa a tale necessità è quella di mettere le righe in ordine alfabetico e beccare immediatamente i doppioni, ma in questo modo perdo l'organizzazione per categoria (non che sia una gran perdita... anzi)

c'è qualcosa del genere o qualche script per i + blasonati editor tipo winhex, pspad, ultraedit32???

thx mille :)

Thor
23-02-2006, 13.54.05
http://www.davethehat.com/articles/eff_stl.htm
http://www.experts-exchange.com/Programming/Programming_Languages/Cplusplus/Q_21736562.html

Xtefano
23-02-2006, 14.23.09
Accidenti !! C++ per questo ??

Io farei così (copia/incolla in un file .bat ... funziona già)


@echo off

rem **** posizionarsi nella directory che contiene il file hosts ***

for /F "tokens=1,2" %%A in (hosts) do (
for /F "usebackq" %%N in (`grep -i -c %%B hosts`) do (
if %%N GTR 1 echo %%B trovato %%N volte
)
)


Ovviamente è necessario il GREP (che puoi trovare qui (http://gnuwin32.sourceforge.net/packages.html) ).

Ti restituisce "n" volte la segnalazione per ogni doppione (es. se www.xxx.com è presente 3 volte vedrai 3 righe "www.xxx.com trovato 3 volte")


A te le libertà di procedere all'ottimizzazione ed al miglioramento....


HTH ;)

Lionsquid
23-02-2006, 14.47.04
Originariamente inviato da Xtefano
Accidenti !! C++ per questo ??

Io farei così (copia/incolla in un file .bat ... funziona già)



Ovviamente è necessario il GREP (che puoi trovare qui (http://gnuwin32.sourceforge.net/packages.html) ).

Ti restituisce "n" volte la segnalazione per ogni doppione (es. se www.xxx.com è presente 3 volte vedrai 3 righe "www.xxx.com trovato 3 volte")


A te le libertà di procedere all'ottimizzazione ed al miglioramento....


HTH ;)

(Y) ottimo :)

credo sia più pratico, thx

miciomao
23-02-2006, 14.58.12
Ma come mi sono sbattuto tutto il pomeriggio per farti questo programmino .....


almeno provalo ;)

Lionsquid
23-02-2006, 14.59.33
:mm:

per trovarli li trova... ma non è così pratico come pensavo.... devo memorizzare l'output in un file txt e poi andare in caccia,... non ci siamo

il PSPAD mi trova i duplicati e mi indica anche il n. di riga... ma la ricerca è lasciata alla keyword :(:(

Lionsquid
23-02-2006, 15.04.06
Originariamente inviato da miciomao
Ma come mi sono sbattuto tutto il pomeriggio per farti questo programmino .....


almeno provalo ;)



ti accontento suBBito :D

Lionsquid
23-02-2006, 15.12.56
:mm:

scusa la domanda.. come carico l'hosts provvisorio?? tieni presente che al momento è in una cartella apposita... non è l'hosts che c'è in windows\system32\drivers\etc

Lionsquid
23-02-2006, 15.20.47
inoltre, visto ciò che hai fatto (Y), sarebbe utile ottenere un "merge" tra 2 file (per comodità potremmo lavorare su dei file con estensione .TXT fino alla delibera e poi esportare come hai già previsto

Lionsquid
23-02-2006, 15.23.10
infine :D:D

visto che ci sei... hai fatto 30...fai 31... completalo per benino e lo mettiamo su WT per tutti gli utenti che desiderano personalizzarsi il file HOSTS, sono certo che Billow apprezzerebbe ;)

miciomao
23-02-2006, 15.33.21
con la query fai una manutenzione, puoi ricercare valori identici quindi cancellare le eventuali righe in eccesso.

nella maschera non è possibile aggiungere valori uguali per l'url, un messaggio ti avvertirà dell'errore.

il file hosts creato in c:\ lo sovrascrivi sul vecchio con un copia incolla tranquillamente.

posso provare a farlo sovrascrivere direttamente in %systemroot%\system32\driver\etc in esportazione.

miciomao
23-02-2006, 15.38.23
per il merge cosa intendi ?

vuoi fondere i tuoi dati con quelli della tabella access ?

Lionsquid
23-02-2006, 15.38.53
il problema è che devo importare il vecchio hosts per iniziare... sono oltre 700 righe :S non ho mica voglia di ridigitarli...

fatto questo, il funzionamento mi soddisfa, da qui in poi posso tranquillamente inserire le nuove righe man mano che scopro monnezza nei vari pc dell'azienda, tanto non saranno più di una decina a settimana

Lionsquid
23-02-2006, 15.39.20
Originariamente inviato da miciomao
per il merge cosa intendi ?

vuoi fondere i tuoi dati con quelli della tabella access ?

esatto

il mio hosts da 700 righe

vedi qui > http://www.wintricks.it/forum/showthread.php?s=&threadid=85625

Lionsquid
23-02-2006, 15.40.25
Originariamente inviato da miciomao
....

posso provare a farlo sovrascrivere direttamente in %systemroot%\system32\driver\etc in esportazione.

la sovrascrittura automatica è meglio non farla... ci sono parecchi sw che monitorano il file... non so come finirebbe :D

meglio procedere a mano senza traumi :D

miciomao
23-02-2006, 15.56.17
Originariamente inviato da Lionsquid


esatto

il mio hosts da 700 righe

vedi qui > http://www.wintricks.it/forum/showthread.php?s=&threadid=85625

Accidenti...
un'impiegato svelto dell'adecco per una giornata dovrebbe bastare :D

postami quì l'host e vedo cosa posso fare
io non uso il metodo

forse ho un'idea per integrarlo senza troppe sofferenze

Lionsquid
23-02-2006, 16.04.25
ok.. ecco l'allegato

ma attento, non tutte le righe iniziano per 127.0.0.1...

EDIT: allegato rimosso... vedere qualche post sotto per il nuovo

miciomao
23-02-2006, 16.20.37
si iniziano tutti con 127.0.0.1

forse volevi dire che non tutti gli url cominciano con www :)

Lionsquid
23-02-2006, 16.21.37
no.. intendevo che ci sono linee di commento... eppoi mi sono accorto che molti non hanno il tab di separazione ma alcuni spazi...

ho riallegato il file ripulito ;)

Lionsquid
23-02-2006, 16.23.06
oppss.. ho fatto un pò di casino

ecco l'ultimo

miciomao
23-02-2006, 16.30.25
:(
avevo finito grrrrrrrrrrrrrr :)

cmq ho trovato 69 record duplicati ;)

l'accendiamo lions ? è il tuo rar definitivo ? :D

vado

Lionsquid
23-02-2006, 16.52.44
è definitivissimo :D

:( mi spiace per averti complicato la vita, sei stato trooopppo rapido :D

miciomao
23-02-2006, 17.00.30
ecco quà

fuso e pulito ;)

Lionsquid
23-02-2006, 17.12.31
(Y) thx mille davvero :)

dal prossimo aggiornamento non potrò immettere doppioni!

per qualche modifica di minor conto si può fare a mano ;) (es. mettere primo di tutti il localhost)

miciomao
23-02-2006, 17.20.09
okkio che arriva la vers 1.1

con campo ricerca :)

miciomao
23-02-2006, 17.25.37
Basta poi per oggi altrimenti intoppo il server :)

eventuali migliorie si possono discutere certo
il file ha licenza free per tutti :)

e poi e un bel regaletto per tutti
anche per me, mi sono accorto di essere appena diventato millenium member ;)

Lionsquid
23-02-2006, 19.19.53
(Y)

come ti ho detto scherzosamente qualche post sopra... senza alcuna fretta, si migliora, si rende + versatile .. e poi si pubblica sul sito, magari accompagnato da due righe per i meno esperti ;)

sono certo che non dispiacerà a nessuno, anzi! ;)

un grazie grande :) ciao

miciomao
23-02-2006, 19.47.46
bhè tu sarai il primo beta tester
comunicami impressioni in merito

buona serata :p

Lionsquid
23-02-2006, 23.43.46
betatester a rapporto.... :)


allora, direi che è venuto fuori un bel lavoretto (Y)

ho inserito qualche nuovo dominio e tutto funziona bene...

l'inserimento del doppione provoca l'avviso di url esistente e quindi non può essere inserito

posso modificare l'IP a mio piacimento ...

tutto ok!

veniamo adesso a come possiamo migliorarlo

1) mettere un campo "commento" (può essere utile per sapere cosa "tratta" l'url)

2) predisporre una procedura per l'inserimento di blocchi di testo, magari organizzati come dei .CSV [IP, URL, Commento, data] (utile per importare blocchi di IP/URL da nuovi file)

3) predisporre il posizionamento di [127.0.0.1 localhost] sempre al primo posto (fondamentale per non rallentare la macchina, il localhost deve sempre essere il primo)

:)




:D


quando puoi... vedi se è fattibile integrare quei 3 punti ;)

Ciao!


PS: noto solo adesso che nell'host generato ci sono 3 righe vuote (127.0.0.1 senza URL), forse dovuto ai miei smanacciamenti... si dovrebbe fare anche un controllo per evitare righe vuote (con IP) , mentre le righe totalmente vuote non hanno importanza alcuna ;)

miciomao
24-02-2006, 16.53.07
Aggiunto: campo commento
ip e localhost posizionato come prima riga valore
Aggiunto: contatore righe
Risolto spazi tra righe (spero!)
Aggiunto: in esportazione, se campo ip o url vuoti le righe verranno saltate


http://img53.imageshack.us/img53/5784/img2ie.jpg

miciomao
24-02-2006, 16.58.14
Per l'importazione una procedura ad hoc la vedo dura

ma si può fare un semplice incolla nella colonna corrispondente in tabella
per inserire in un solo colpo una quantità enorme di dati

Lionsquid
24-02-2006, 23.21.09
arrivo solo adesso.. (Y) lo provo immediatamente

Xtefano
25-02-2006, 08.27.51
Però ..... carino !

E io che ero partito dalla richiesta del titolo ....... :rolleyes:


Effettivamente si possono fare cose egregie con relativamente poco .... qui in azienda con VB, VC e Perl stiamo automatizzando l'impossibile !!

Complimenti miciomao ;)

Lionsquid
25-02-2006, 09.00.00
beh.. in effetti ci siamo allontanati dalla richiesta... lo stretto necessario al rintracciamento è stato sistemato.. adesso si va oltre :)

in pratica siamo OT :D

Lionsquid
25-02-2006, 09.03.28
Originariamente inviato da miciomao
Per l'importazione una procedura ad hoc la vedo dura

ma si può fare un semplice incolla nella colonna corrispondente in tabella
per inserire in un solo colpo una quantità enorme di dati


appena posso provo anche questo... però si parte da testo con <CR>... mi conviene trasformarlo in tabella (singola colonna e x righe) ??

non sarà un'operazione frequente..anzi.. però può accadere...


altra domanda... in caso di casini :D, un reset del DB e nuova acquisizione in toto dell'hosts... è fattibile??

miciomao
27-02-2006, 18.21.27
Attendo commenti Lions ;)


Aggiunto: Procedura automatizzata di esportazione backup in cartella dedicata
Aggiunto: Procedura automatizzata di importazione backup dalla cartella dedicata


http://img499.imageshack.us/img499/564/img7yi.jpg

Lionsquid
27-02-2006, 18.59.38
provvedo immediatamente a testarlo.... :)

Lionsquid
27-02-2006, 19.10.59
ottimo.. provato tutto.. ho anche creato dei doppioni modificati dei backup per vedere come si comportava...

ho visto che è fondamentale rispettare gli spazi per ottenere il corretto riconoscimento del campo nel record...

domanda...

se ho qualche decina di nuove url.. come formatto il TXT in modo da farlo acquisire correttamente?? in pratica quando finisce un campo e ne inizia un'altro?? nei .CSV è la virgola a separare... qui il numero di caratteri??

miciomao
27-02-2006, 19.44.26
non prende simboli come delimitatore di colonna ma bensì numero di campi occupati:

nome campo | Inizio | Larghezza
ip 1 15
url 16 100
commento 116 255
Inserito 371 19




Io cmq insisterei ad inserire uno a uno i nuovi record per non incappare in errori di importazione poi.
in fondo la maggior parte del lavoro è stata automatizzata. :)

Lionsquid
27-02-2006, 20.43.42
Originariamente inviato da miciomao
non prende simboli come delimitatore di colonna ma bensì numero di campi occupati:

nome campo | Inizio | Larghezza
ip 1 15
url 16 100
commento 116 255
Inserito 371 19




Io cmq insisterei ad inserire uno a uno i nuovi record per non incappare in errori di importazione poi.
in fondo la maggior parte del lavoro è stata automatizzata. :)


ma infatti la base è già operativa... l'idea era per renderlo il + flessibile possibile...


(il campo commento è enorme ecco perchè il txt era altrettanto enorme :) )


lo provo un pò.... magari immettendo un pò di url che nel frattempo ho messo da parte ;)

miciomao
27-02-2006, 22.32.49
domani vedo di sistemarlo meglio

forse l'incolonnamento con simboli è migliore e + facile da editare manualmente

tipo usando | come delimitatore:

ip|url|commento|Inserito


meno spazio e meno problemi

Lionsquid
27-02-2006, 23.28.44
sicuro...(Y)

e se usi la virgola come separatore e <CR> come fine record sarà possibile importare i dati in excel&co.

non che sia fondamentale ma più è standardizzato il format più è facile scambiare dati

poi, conclusa questa fase... lo proponiamo a Billow per la pubblicazione.. che ne dici??

miciomao
28-02-2006, 15.16.00
Scusa Lions mi dici come deve essere creata la riga di esportazione ?

ip,url,commento,Inserito<CR>

OPPURE

ip,url,commento,Inserito,<CR>

Lionsquid
28-02-2006, 15.54.12
Originariamente inviato da miciomao
Scusa Lions mi dici come deve essere creata la riga di esportazione ?

ip,url,commento,Inserito<CR>

OPPURE

ip,url,commento,Inserito,<CR>



la prima è lo standard corretto del .CSV

miciomao
28-02-2006, 16.21.22
io comunque aprendo adesso un file .csv in formato testo noto:

A;B;C

e per me così sarebbe l'ideale, quel <CR> rischio di importarlo nel campo data altrimenti

Lionsquid
28-02-2006, 19.32.17
aspè, aspè... forse mi spego male


i .csv usano le virgole per separare i campi (o punto e virgola o altro segno di interpunzione), mentre il record termina con un'invio, <cr> appunto..(Carriage Return, Ritorno Carrello :) ) forse non sono stato abbastanza chiaro prima...

se trovi più comodo usare il "punto e virgola" va bene lo stesso... con excel puoi scegliere il carattere separatore per l'importazione dei dati, in molti editor "di qualità" puoi fare lo stesso e in ogni caso con un "trova e sostituisci" si può trasformare tutto in pochi secondi ;)

miciomao
01-03-2006, 18.42.48
Ok credo che adesso ci siamo
è stato ridotto in 1/8 lo spazio in Kb per ogni file di backup
35 kb circa

Ora i file di backup sono meglio editabili per via del delimitatore colonna (;)

Vuoi provare ? :)


Modificato: In esportazione cambiato separatore colonna da LARGHEZZA FISSA a DELIMITATO


http://img499.imageshack.us/img499/564/img7yi.jpg

Lionsquid
01-03-2006, 20.39.34
ciao micio :)

dopo cena provo, intanto scarico ;)

Lionsquid
02-03-2006, 01.23.29
provato.. (Y) nessun errore, backup di peso decente e editabili con facilità


adesso si potranno aggiungere blocchi (opportunamente strutturati) con facilità...

importare il DB, verificare se esistono duplicati, ripulire, salvare e poi espostare backup e hosts

(Y) direi che hai fatto un bel lavoro :)

se ti va di scrivere 2 righe, un'articoletto che descriva caratteristiche e modalità d'uso, propongo il tuo lavoretto a Billow per la pubblicazione (anche se necessiterebbe di un po di test da parte di utenti... non troppo smaliziati)

che ne dici?

miciomao
02-03-2006, 10.15.46
per me và bene

vediamo se riesco a buttare giù qualcosa scritto
se hai un'idea della bozza di pure :)

Lionsquid
13-03-2006, 11.34.58
up

miciomao, hai avuto il tempo di scrivere 2 paroline??

se non ce la fai magari a fine settimana faccio io, così chiudiamo il 3d... e per mantenere eventuali aggiornamenti SW ne apriamo uno specifico ;)

miciomao
13-03-2006, 11.59.31
ho scritto 2 cavolate ma volevo farlo un pò meglio documentandomi sul file hosts e le sue funzioni reali.


Il programma permette di creare il file hosts da un'insieme di dati contenente ip, url e commento, gestibili tramite una comoda interfaccia.

E' possibile inserire l'url ed un'eventuale commento,
possiamo visualizzare la data d'inserimento ed il numero totale delle righe.
Tra le caratteristiche principali abbiamo una ricerca di url duplicati, una ricerca veloce su digitazione per eventuali controlli, una funzione di backup con nome file univoci su cartella dedicata e una funzione ripristino degli stessi.

Lionsquid
13-03-2006, 13.35.32
ok.. se serve, sono qui per "travasi" di info ;)

(alcune info sul file host le trovi su un vecchio articoletto che ho scritto)

sui duplicati per esempio, specificherei che è impossibile inserirne di nuovi se l'inserimento è fatto manualmente ...mentre può accadere in caso di importazione di blocchi (è da provare anche questo)


edit: corrrezione ottografica :D

Lionsquid
16-03-2006, 20.12.21
up...


ho scritto due righe informali... :D


micioooooo :)

miciomao
17-03-2006, 11.48.03
eccomi

ho letto il tuo articolo http://www.wintricks.it/faq/hosts.html
non mi sembra ci sia da aggiungere altro ineffetti.

hai apportato modifiche/aggiunte alle mie 2 righette ?
:)

Lionsquid
17-03-2006, 12.09.16
ho scritto un papiro totalmente differente.... se mi mandi in PVT una mail ti invio l'.RTF così integri a tuo piacimento ;)

Lionsquid
18-03-2006, 10.50.31
micio... hai ricevuto la mail??

miciomao
19-03-2006, 02.05.43
si, tu hai ricevuto la mia ? :)

Lionsquid
19-03-2006, 17.13.01
mi sono connesso solo ora, si ho il tuo doc che integrerò così come sta, solo una paio di aggiustatine.

presentero il testo così come è scritto... in modo che sia chiaro il contesto di nascita e lo scopo del lavoro!

Stasera lo inoltro al giudizio dello Staff, in assenza di obiezioni e/o suggerimenti passa direttamente nelle mani di Billow ;) . Il file sarà il mio che nel frattempo ho mantenuto aggiornato ;)

ps: ah.. dimenticavo ... 174 ;)

miciomao
19-03-2006, 22.00.36
Originariamente inviato da Lionsquid
cut;

ps: ah.. dimenticavo ... 174 ;)

Grazie ;)

è stato un piacere