2016-04-08 8 views

Antwort

0

perl:

perl -pe '%x = map {$_=>1} split ""; $_ = join "", sort keys %x' file 

oder Rubin:

ruby -pe '$_ = $_.chars.uniq.sort.join("")' file 
1

Dies könnte für Sie arbeiten (GNU sed & sort):

sed 's/\s*/\n/g;s/.*/echo "&"|sort -u/e;s/\n//g' file 

weißen Raum entfernen und jedes Zeichen durch eine neue Zeile trennen. Sortieren Sie die erzeugten Zeilen, um Duplikate zu entfernen. Entfernen Sie die eingefügten Zeilenumbrüche.

+0

Gut gemacht, aber ich denke, Sie könnten ein bisschen mehr erklären - dass Sie die 'e' GNU' sed' Erweiterung verwenden, um Shell-Befehle auszuführen, und die ursprünglichen Zeilenumbrüche werden automatisch von 'sed' beibehalten. –

1

Mit gawk:

awk -v FS="" '{ 
    for(i=1;i<=NF;i++){ 
     if ($i in a == 0){ 
      a[$i] 
     } 
    }; 
    d=asorti(a,b); 
    for(x=1;x<=d;x++){ 
     printf "%s",b[x] 
    }; 
    print ""; 
    delete a; 
    delete b 
    }' 
+1

Danke. Die Antwort wurde geändert. – 7171u

0

Mit GNU awk 4. * für sorted_in und Aufspalten eines Datensatzes in Zeichen, wenn FS null:

$ cat tst.awk 
BEGIN { FS=OFS=ORS=""; PROCINFO["sorted_in"]="@ind_str_asc" } 
{ 
    for (i=1;i<=NF;i++) a[$i] 
    for (i in a) print i 
    print RS 
    delete a 
} 

$ awk -f tst.awk file 
ABCD 
ACEFGH 
DFJKLU 
ABC 
Verwandte Themen