2016-04-28 21 views
0

Hallo Ich habe eine Hausaufgabe in meiner Klasse und einen Teil davon ist es, eine Liste von Strings nach ihrer Länge zu sortieren.Sortieren von Strings ohne die Verwendung von awk oder sed

Wir können nicht verwenden awk oder sed, nur bash. Lets sagen, dass ich etwas, das so aussieht:

ten 
car 
something 
plane 
stack 
overflow 

Das Endergebnis der Sortieranlage

something 
overflow 
stack 
plane 
ten 
car 

sein sollte, dass die längere Wörter auf Mittel, und wenn sie die gleiche Größe in alphabetischer Reihenfolge sind.

Das ist, was ich bisher ausprobiert habe:

extSort(){ 
    total=$(cat $file| wc -w) 
    count="$(cat $file | tr ' ' '\n' | tr -d '[:punct:]' | sort | uniq -c | sort -k1,1nr -k2 -n)" 
    while read line; do 
     if [ $(echo $line | wc -w) -eq 1 ]; then 
      continue 
     fi 
    current=$(echo $line | cut -d " " -f 1) 
    percent=$(echo "$current/$total*100" | bc -l) 
    round=$(echo "scale=2; $percent/1" | bc -l)"%%" 
    printf "$line "$round"\n" done <<<"$input" 
} 
+4

So möchten Sie uns Ihre Hausaufgaben machen? –

+1

Ich habe 97% davon gemacht, das Problem ist, dass ich das nicht herausfinden kann Ich habe wie eine Liste, die 1500 Zeilen lang ist und nichts online gefunden, so dass kleine Hilfe kein Problem sein sollte :) – Demian

+3

ok gut so din't zögert Ihren atttempted Code in Frage zu stellen – anubhava

Antwort

0
$ echo "ten 
car 
something 
plane 
stack 
overflow" | while read -r line || [[ -n "$line" ]]; do echo "${#line} ${line}"; done | sort -r -k 1,2 | cut -d ' ' -f 2 
something 
overflow 
stack 
plane 
ten 
car 
$ 
Verwandte Themen