Confrontare righe in un file di testo

Installazione, configurazione e uso di programmi e strumenti.
Avatar utente
cattivocliente
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 613
Iscrizione: lunedì 23 giugno 2008, 0:20
Desktop: lightdm-xsession
Distribuzione: Debian GNU/Linux 11 (bullseye)
Sesso: Maschile
Località: Pineto

Confrontare righe in un file di testo

Messaggio da cattivocliente »

Ciao,
ho uno script (abbastanza lungo) e la necessità di verificare se questo contiene righe uguali. Come potrei fare?

Grazie, Cè :)
nadiag81
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 369
Iscrizione: lunedì 26 maggio 2008, 23:19

Re: Confrontare righe in un file di testo

Messaggio da nadiag81 »

credo che si possa usare questo:

#cat elenco-numeri-telefono.txt | grep Andrea
-->Qui immaginiamo di avere un file di testo in cui ogni riga contiene un nome, un cognome ed un numero di telefono. Con il comando cat si mostra il suo contenuto, ma prima che ciò avvenga il comando grep filtra l’output mantenendo solo le righe in cui compare la parola Andrea.
#cat elenco-numeri-telefono.txt | less


non so se è quello che fa al caso tuo però...
Avatar utente
cattivocliente
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 613
Iscrizione: lunedì 23 giugno 2008, 0:20
Desktop: lightdm-xsession
Distribuzione: Debian GNU/Linux 11 (bullseye)
Sesso: Maschile
Località: Pineto

Re: Confrontare righe in un file di testo

Messaggio da cattivocliente »

se funziona fa al caso mio... lo provo e te lo faccio sapere. Grazieeeeeeeee
Avatar utente
cattivocliente
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 613
Iscrizione: lunedì 23 giugno 2008, 0:20
Desktop: lightdm-xsession
Distribuzione: Debian GNU/Linux 11 (bullseye)
Sesso: Maschile
Località: Pineto

Re: Confrontare righe in un file di testo

Messaggio da cattivocliente »

:'(  no... questo comando filtra le righe che corrispondono al criterio assegnato, io ho bisogno di controllare se nel documento esistono (e quali sono) righe ripetute... Mi aiutate please!!?
Avatar utente
mohr tutchy
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 411
Iscrizione: mercoledì 24 ottobre 2007, 21:36

Re: Confrontare righe in un file di testo

Messaggio da mohr tutchy »

Apri il file con gvim, quindi File>Finestra Differenza con> Seleziona il file da confrontare

One love
nadiag81
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 369
Iscrizione: lunedì 26 maggio 2008, 23:19

Re: Confrontare righe in un file di testo

Messaggio da nadiag81 »

e questo?

Filtri che operano su input di tipo testo [modifica]

Molti filtri sono usati per manipolare il testo e molti di questi applicano le proprie regole riga per riga, ecco alcuni tra quelli più comunemente usati:

   * cut - estrae parti di ogni riga
   * grep - estrae le linee che contengono certe parole e/o che rispondono a certe caratteristiche (vedi espressioni regolari)
   * head - riporta soltanto le prime righe
   * tail - riporta soltanto le ultime righe
   * sort - ordina le righe (quindi restituisce tutto l'input, dopo averlo ordinato)
   * uniq - elimina le righe ripetute (spesso usato insieme a sort
   * comm
   * expand
   * fold - spezza su più righe in output le righe in input troppo lunghe
   * nl
   * pr
   * split
   * tee
   * tr
   * wc
   * awk e sed - questi possono essere usati per costruire filtri abbastanza complicati, perché sono in realtà degli interpreti di programmi (script) scritti in un linguaggio pensato espressamente per la manipolazione dei file di testo.

Per operazioni ancora più elaborate possono essere usati anche linguaggi di scripting come perl, php, python o shell programming come sh e bash, ma in questi casi la funzionalità di filtro non è quella principale del programma.
unicatout
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 628
Iscrizione: martedì 8 maggio 2007, 0:46

Re: Confrontare righe in un file di testo

Messaggio da unicatout »

l'unica è farti uno script che ti fa la verifica sullo script!!!  (good)
Avatar utente
cattivocliente
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 613
Iscrizione: lunedì 23 giugno 2008, 0:20
Desktop: lightdm-xsession
Distribuzione: Debian GNU/Linux 11 (bullseye)
Sesso: Maschile
Località: Pineto

Re: Confrontare righe in un file di testo

Messaggio da cattivocliente »

...che abbondanza di aiuti!!! Grazie, mi metto al lavoro e vi faccio sapere...  (good)
unicatout
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 628
Iscrizione: martedì 8 maggio 2007, 0:46

Re: Confrontare righe in un file di testo

Messaggio da unicatout »

devi solo trovare le righe doppie o devi farci qualcos'altro?
Avatar utente
cattivocliente
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 613
Iscrizione: lunedì 23 giugno 2008, 0:20
Desktop: lightdm-xsession
Distribuzione: Debian GNU/Linux 11 (bullseye)
Sesso: Maschile
Località: Pineto

Re: Confrontare righe in un file di testo

Messaggio da cattivocliente »

devo trovare le righe doppie per cancellare i doppioni
nadiag81
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 369
Iscrizione: lunedì 26 maggio 2008, 23:19

Re: Confrontare righe in un file di testo

Messaggio da nadiag81 »

ci sei riuscito quindi? o non ancora? ora sono curiosa...
Avatar utente
cattivocliente
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 613
Iscrizione: lunedì 23 giugno 2008, 0:20
Desktop: lightdm-xsession
Distribuzione: Debian GNU/Linux 11 (bullseye)
Sesso: Maschile
Località: Pineto

Re: Confrontare righe in un file di testo

Messaggio da cattivocliente »

Non ancora, ma devo provare il suggerimento di mohr tutchy (leggi sopra) poi ti dico...  :D
Avatar utente
mohr tutchy
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 411
Iscrizione: mercoledì 24 ottobre 2007, 21:36

Re: Confrontare righe in un file di testo

Messaggio da mohr tutchy »

Grazie della fiducia cattivocliente, ma ti ho detto una cavolata  ::)
Non avevo capito di cosa avessi bisogno, il mio suggerimento sarebbe stato utile se avessi dovuto confrontare due script, non le righe dello stesso script...
Scusa

One love
unicatout
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 628
Iscrizione: martedì 8 maggio 2007, 0:46

Re: Confrontare righe in un file di testo

Messaggio da unicatout »

qualcuno è riuscito a fare qualcosa?
...domani dovrei avere un po di tempo, così ci provo!!
Avatar utente
scacchia
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2863
Iscrizione: martedì 15 maggio 2007, 22:39
Località: Un po' qui e un po' la

Re: Confrontare righe in un file di testo

Messaggio da scacchia »

unicatout ha scritto: qualcuno è riuscito a fare qualcosa?
...domani dovrei avere un po di tempo, così ci provo!!
ma non ho capito una cosa, tu vuoi trovare in un file di testo (script in questo caso) 2 righe perfettamente identiche?

in questo caso potresti usare sort per ordinare il file... prova cosi:

Codice: Seleziona tutto

sort NOMEFILE_DA_ORDINARE > NOMEFILE_ORDINATO
, a quel punto o ti scorri il NOMEFILE_ORDINATO cercando 2 righe uguali, essendo subito una dopo l'altra non è difficile trovarle, o de il file è troppo lungo per cercarle ad occhio, devi ricorrere ad uno scrippettino che legga la riga e la confronti con quella precedente per vedere se sono uguali.

PS: Per altri tipi di compare, tra file diversi o directory diverse consiglio meld  :)
"Non importa quanto corri, ma dove corri e perchè" Z. Zeman
"In an open world, who needs Windows or Gates?"
"Io lo spero vivamente, ma ho i miei dubbi che possa vincere uno scudetto con la Roma, che è il sogno più grande della mia vita." D.D.R.
unicatout
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 628
Iscrizione: martedì 8 maggio 2007, 0:46

Re: Confrontare righe in un file di testo

Messaggio da unicatout »

forse ci sono riuscito!!!!
appena ho un attimo vi posto lo script!!!
unicatout
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 628
Iscrizione: martedì 8 maggio 2007, 0:46

Re: Confrontare righe in un file di testo

Messaggio da unicatout »

@ cattivocliente
prova a vedere se così può andare!
...le righe doppie non le cancella ma le commenta! (eventualmente si possono anche cancellare)

questo è lo script:

Codice: Seleziona tutto

#!/bin/bash

# Data       : 25-07-2008
# Nome script: crd.sh
# Descrizione: commenta le righe doppie presenti in un file (escluso la prima trovata)
#-------------------------------------------------------------------------------------


# input utente
# faccio inserire all'utente il percorso e nome 
# dei files (da elaborare e modificato).
clear
while [[ $pathFileOrig = "" ]]; do
   echo -n "Digita il percorso seguito dal nome del file da elaborare: "
   read pathFileOrig
done
while [[ $pathFileMod = "" ]]; do
   echo -n "Digita il percorso seguito dal nome del file modificato: "
   read pathFileMod
done

# leggo quante righe ha il file e mi salvo il 
# numero ottenuto nella variabile "tr"
tr=`wc -l $pathFileOrig | awk '{ print $1 }'`

# inserisco il file originale in un array
# commentando le righe doppie successive
# alla prima trovata.
let i=1
let z=1
let j=1
while read riga
do
   for j in `seq 1 $z`;do
      if [ $i = "1" ]
         then
            array[i]=$riga
      elif [[ $riga = "${array[j]}" ]]
         then #se uguale
            array[i]='# '$riga
            break
         else #se diverso
            array[i]=$riga
      fi
   done
   let i=i+1
   let z=i-1
done < $pathFileOrig

# traferisco i dati presenti nell'array
# nel file "pathFileMod"
for u in `seq 1 $tr`
do
   echo ${array[u]} >> $pathFileMod
done
...fatemi sapere come si può migliorare!!
Avatar utente
cattivocliente
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 613
Iscrizione: lunedì 23 giugno 2008, 0:20
Desktop: lightdm-xsession
Distribuzione: Debian GNU/Linux 11 (bullseye)
Sesso: Maschile
Località: Pineto

Re: Confrontare righe in un file di testo

Messaggio da cattivocliente »

Unica, ora non sono a casa ma stasera o domani provo il tuo script e ti faccio sapere. Intanto grazie :)
Avatar utente
Caf-Pow
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 324
Iscrizione: sabato 19 agosto 2006, 9:50

Re: Confrontare righe in un file di testo

Messaggio da Caf-Pow »

servirebbe anche a me, ma lo script non funziona  :-\

vengono aggiunte le righe del primo documento nel secondo, senza però commentare le righe già presenti nel primo, quindi i doppioni rimangono :-\

facendo delle prove vengono commentate solo alcune righe  :-\
Ultima modifica di Caf-Pow il sabato 26 luglio 2008, 15:54, modificato 1 volta in totale.
unicatout
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 628
Iscrizione: martedì 8 maggio 2007, 0:46

Re: Confrontare righe in un file di testo

Messaggio da unicatout »

come non funziona?!??  :o

ho riprovato adesso e funziona perfettamente!!!

che tipo di file stai elaborando così provo anch'io?
Scrivi risposta

Ritorna a “Applicazioni”

Chi c’è in linea

Visualizzano questa sezione: Bing [Bot] e 6 ospiti