![]() |
Ciao e benvenuto da parte degli Stati Uniti al UNIX e Linux Forum! Grazie per la visita ed unirsi alla nostra Comunità Globale.
|
|
google unix.com
|
|||||||
| Forum | Registrati | Regole Forum | Collegamenti | Album | FAQ | Members List | Calendario | Ricerca | Today's Posts | Mark Forums Read |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Cerca in questo Thread | Rate Thread | Modalità di visualizzazione |
|
|
|
||||
|
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 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";
Srini |
|
||||
|
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)
Codice:
# ./test.py No change apple,mango,orange,apple,grape unix,windows,solaris,windows,linux No change orange,maroon,pink,violet,orange,pink |
|
||||
|
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 |
|
||||
|
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 |
|
||||
|
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
|
|
||||
|
Salve,
Penso di si sbaglia. Citazione:
Mi dispiace se il mio atto è stato arrogante se. Grazie, Srini |
![]() |
| Segnalibri |
| Tag |
| linux |
| Thread Tools | Cerca in questo Thread |
| Modalità di visualizzazione | Vota questo thread |
|
|