The UNIX and Linux Forums  
Ciao e benvenuto da parte degli Stati Uniti al UNIX e Linux Forum! Grazie per la visita ed unirsi alla nostra Comunità Globale.

Go Back   UNIX e Linux Forum > Inizio Forum > UNIX for Dummies Domande & Risposte
.
google unix.com



UNIX for Dummies Domande & Risposte Se non sei sicuro dove pubblicare un UNIX o Linux domanda, posta da qui. Tutti i neofiti di Linux e UNIX benvenuto!

Più di UNIX e Linux Forum Argomenti potreste trovare utili
Filo Thread Starter Forum Risposte Ultimo Post
contare non di parole contenute in una linea Satish @ 123 Shell scripting e di programmazione 7 05-21-2008 03:59 AM
Necessità di individuare la riga che contiene @ tra la linea di un file b.paramanatti UNIX for Dummies Domande & Risposte 4 11-04-2007 10:50 PM
separare le parole di una linea? skyineyes Shell scripting e di programmazione 3 06-26-2007 10:00 AM
rimuovere e duplicare linea linea Ocelot UNIX for Dummies Domande & Risposte 11 01-30-2007 12:44 PM
Duplica parole zulander UNIX for Dummies Domande & Risposte 1 04-01-2001 04:11 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Cerca in questo Thread Rate Thread Modalità di visualizzazione
  #1 (permalink)  
Old 04-27-2007
srinivasan_85 srinivasan_85 is offline
Utente Registrato
  
 

Iscriviti Data: gennaio 2007
Interventi: 28
Exclamation Identificare parole duplicate in una linea utilizzando il comando

Salve,
Permettetemi di spiegare il problema in modo chiaro:
Sia le voci nel mio file:
Codice:
lion,tiger,bear
apple,mango,orange,apple,grape
unix,windows,solaris,windows,linux
red,blue,green,yellow
orange,maroon,pink,violet,orange,pink
Siamo in grado di individuare le linee in cui una delle parole (separate da separatore di campo) si verifica più di una volta, utilizzando un comando (o tubo di comando)?
In questo caso, il comando deve individuare le linee 2,3,5.

Ho realizzato con un perl script (citata qui di seguito), anche se mi chiedo se questo potrebbe essere realizzato attraverso un comando (la difficoltà è che il no. delle colonne non è costante).

Perl programma che ho usato:
Codice:
$fname=<STDIN>;
chomp $fname;
open(file,"<$fname");
$found_dups=0;

for $line(<file>)
{
  chomp $line;
  @arr=split(/,/,$line);
  for($i=1;$i<=$#arr;$i++)
  {
     for($j=$i+1;$j<=$#arr;$j++)
     {
        if($arr[$i] eq $arr[$j])
        {
           print "tid $arr[0]\n";
           $found_dups++;
        }
     }
  }
}
print "Found $found_dups duplicates\n";
Grazie,
Srini
  #2 (permalink)  
Old 04-27-2007
ghostdog74 ghostdog74 is offline Forum Advisor  
Utente Registrato
  
 

Join Date: Sep 2006
Interventi: 2.538
Se si dispone di Python, ecco una neater alternativi:
Codice:
#!/usr/bin/python
for line in open("file"):
    line = line.strip().split(",")
    if len(line) == len(set(line)):
        print "No change"
    else:
        print ','.join(line)
uscita:
Codice:
# ./test.py
No change
apple,mango,orange,apple,grape
unix,windows,solaris,windows,linux
No change
orange,maroon,pink,violet,orange,pink
  #3 (permalink)  
Old 04-27-2007
awk awk is offline
Utente Registrato
  
 

Iscriviti Data: febbraio 2007
Interventi: 134
awk-F, '(
for (i \u003d 1; i <NF; i + +)
(
for (j \u003d I +1; J <\u003d NF; J + +)
(
if ($ i \u003d\u003d $ J) (print $ I ":" $ 0)
)
)
) '<<ENDOFFILE
leone, tigre, orso
mela, mango, arancia, mela, uva
Unix, Windows, Solaris, Windows, Linux
rosso, blu, verde, giallo
arancione, marrone, rosa, viola, arancione, rosa
ENDOFFILE
mela: mela, mango, arancia, mela, uva
finestre: Unix, Windows, Solaris, Windows, Linux
arancio: arancio, marrone, rosa, viola, arancione, rosa
rosa: arancio, marrone, rosa, viola, arancione, rosa
  #4 (permalink)  
Old 04-27-2007
srinivasan_85 srinivasan_85 is offline
Utente Registrato
  
 

Iscriviti Data: gennaio 2007
Interventi: 28
Unhappy

Salve,
Grazie per i suggerimenti. Capisco che il lavoro può essere svolto da diverse varianti di script, ma ciò che mi è ansioso su "un unico comando / comando pipe" che può fare il lavoro. Se ci sono solo determinato numero di voci in ogni riga, i manualmente possono confrontare in riga di comando utilizzando awk /perl. Ma dal momento che i dont know no. dei commenti in ogni linea, il compito è gravoso.
Vorrei essere illuminato se ho un comando tubo versione di questi script.

Grazie
Srini
  #5 (permalink)  
Old 04-30-2007
kahuna's Avatar
Kahuna kahuna is offline
Utente Registrato
  
 

Iscriviti Data: aprile 2007
Interventi: 149
Srini, io non sono sicuro di comprendere la vostra riluttanza ad utilizzare gli script inviato. Ciò detto, si può provare lo script qui di seguito. Non è molto efficiente, ma è breve.
Codice:
perl -nle 'print if /(^|,)([^,]+)(,|,.*,)\2(,|$)/;' <file
  #6 (permalink)  
Old 04-30-2007
matrixmadhan matrixmadhan is offline Forum Advisor  
Technorati Master
  
 

Iscriviti Data: marzo 2005
Location: nodo foglia in B + tree
Messaggi: 2.953
Anche in questo caso con perl,
ma molto più semplice

Codice:
#! /opt/third-party/bin/perl

open(FILE, "<", "file") || die "Unable to open file <$!> \n";

while(chomp($var=<FILE>)) {
  @arr = split(/,/, $var);
  foreach(@arr) {
    if( exists $fileHash{$_} ) {
      print $var . "\n";
      last;
    }
    else {
      $fileHash{$_} = $i++;
    }
  }
  %fileHash = ();
}

close(FILE);

exit 0
  #7 (permalink)  
Old 05-01-2007
srinivasan_85 srinivasan_85 is offline
Utente Registrato
  
 

Iscriviti Data: gennaio 2007
Interventi: 28
Wink

Salve,
Penso di si sbaglia.
Citazione:
Originalmente inviato da Kahuna
Srini, io non sono sicuro di comprendere la vostra riluttanza ad utilizzare gli script inviato.
Ho avuto un tale obbligo quando ho inviato questa domanda, ma è stata la mia curiosità che mi ha spinto a chiedere guyz sulla "linea di comando" versione di ciò che il mio perl programma potrebbe fare. Non è che sto trascurando gli script inseriti, ma solo che ho voluto ampliare le mie conoscenze su una linea (ho un fascino nei confronti di una linea).

Mi dispiace se il mio atto è stato arrogante se.

Grazie,
Srini
Closed Thread

Segnalibri

Tag
linux

Thread Tools Cerca in questo Thread
Cerca in questo Thread:

Ricerca Avanzata
Modalità di visualizzazione Vota questo thread
Vota questo thread:

Distacco regolamento
Tu non può post nuovo thread
Tu non può inviare una risposta
Tu non può postare allegati
Tu non può modificare i tuoi post

BB codice è Su
Smilies sono Su
[IMG] codice Su
Codice HTML è Chiuso
Trackbacks sono Su
Pingbacks sono Su
Refbacks sono Su




Tutti gli orari sono GMT -4. La data di oggi è 10:21 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traduzioni Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX e Linux Forum Content Copyright © 1993-2009. Tutti i diritti Reserved.Ad di gestione da RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0