Diese Methode produziert allerdings eine geordnete Liste, was vielleicht unerwünscht ist. Es gibt natürlich viele Möglichkeiten doppelte einträge zu entfernen ohne die original Reihenfolge zu verlieren. Zum Beispiel:P6CNAT schrieb:cat datei.txt | sort -u > neuedatei.txt
001 bla
002 blabla
003 bla
004 blabla
005 bla1
001 bla
005 bla1
004 blabla
001 bla
004 blabla
005 bla1
bla
blabla
bla1
#!/usr/bin/perl -w
unless (@ARGV) {
print "Usage cutlines.pl <file>.\n";
exit(1);
}
open(FH, "<$ARGV[0]");
my @a = <FH>; # Gulp!
close(FH);
my @b = (); my $i; my $u; my $x;
foreach $i (@a) {
$x = 0;
foreach $u (@b) {
if ($i eq $u) {
$x = 1;
last;
}
}
unless ($x) {
push(@b, $i);
}
}
foreach (@b) {print;}
dafür fast tausend Zeilenabgdf schrieb:cutlines.pl:
......
HTH![]()
awk '{if (a[$0]==0) {a[$0]=1; print}}' testdatei.txt
Menno, das ist natürlich kein Problem von Perl, sondern von mir.robi schrieb:dafür fast tausend Zeilenabgdf schrieb:cutlines.pl:
......
HTH![]()
mit awk geht sowas natürlich auch recht praktisch
![]()
Code:awk '{if (a[$0]==0) {a[$0]=1; print}}' testdatei.txt
robi
perl -ne 'unless($h{$_}){$h{$_}=1; print}' -i testdatei.txt
abgdf schrieb:Ein Hash ist eine sehr gute Idee. Dann also:
Code:perl -ne 'unless($h{$_}){$h{$_}=1; print}' -i testdatei.txt
Mal als Denkanstoß. Du hast die folgenden Namen auf einem ZettelP6CNAT schrieb:Verstanden habe ich die aber nicht
Oma
Opa
Tante
Opa
Egon
STRING V[5]={"Oma","Opa","Tante","Opa","Egon"};
for (i=0;i<5;i++){
printf ("%s \n",V[i]);
}
V["Oma"]="12.8.1943"
V["Opa"]="8.10.1939"
V["Tante"]="24.2.1962"
V["Egon"]="31.8.1978"
if (V["Oma"]==0) then {V["Oma"]=1; print "Oma"}
Zumindest vom Programmieraufwand sehr effizient. Gewöhnungsbedürftig ist es aber schon. Z.B. gaaanz lange Zeilen aus einer CSV Datei als Index in einem assoziativen Array zu verwenden. Irgendwie gruselig, wenn man gewohnt ist Indizes möglichst kurz und effizient zu wählenframp schrieb:Assoziative Arrays sind doch schon was Feines.
Das ist immer eine Frage des Einsatzes: Eine DB würde ich damit auch nicht realisieren. Aber für kleinere Dinge (one liners etc) oder Prototypen bestens geeignet.P6CNAT schrieb:... Gewöhnungsbedürftig ist es aber schon. Z.B. gaaanz lange Zeilen aus einer CSV Datei als Index in einem assoziativen Array zu verwenden. Irgendwie gruselig, wenn man gewohnt ist Indizes möglichst kurz und effizient zu wählen...
perl -ne 'unless($h{$_}){$h{$_}=1; print}' -i testdatei.txt
Danke hat geholfen