Zahlen Gruppieren und zusammenfassen

Nexus2kSwiss

Mitglied
Ich habe diverse Zahlen, die ich gerne gruppieren möchte (Volume Labels)

Der Input sieht so aus:
35900
35901
35902
35903
35904
35905
35906
35907
35908
35909
35910
35911
35912
35913
35914
35915
35916

Und der Output sollte so aussehen:
359/00-16
Also alle Stellen eines Bereiches die gleich bleiben, sollen vor dem / stehen und der bereich der geänderten Zahlen hinder dem / mit dem start und dem endwert.

Das Problem ist nun, dass auch folgende Outputs möglich sein sollen:
10014/0-9
32/000-499
Sprich die gleichbleibene Anzahlstellen kann variieren.

Hat jemand eine Idee wie ich das am schlausten mit einem Bashscript und ner Schleife machen könnte ?

EDIT: Hat sich erledigt

Folgender Code wurde dazu verwendet:
Code:
start=0
prev=0
for i in $vols; do
if [ $start -eq 0 ]; then
start=$i;
fi;
if [ $prev -ne 0 ]; then
if [ `expr $prev + 1` -ne $i ]; then
stop=$prev
echo "Start: $start / Stop: $stop";
diff=`expr $stop - $start`
length=`echo $i | wc -m`
anzdiff=`echo $diff | wc -m`
#anzdiff=`expr $anzdiff - 1`
beg=${start: -$anzdiff+1}
end=${stop: -$anzdiff+1}
echo "Substr: L${start:0:`expr $length - $anzdiff`}/$beg-$end"
range="L${start:0:`expr $length - $anzdiff`}/$beg-$end"
volsout="$volsout $range";
echo "Differenz: $diff Anzahl Stellen: $anzdiff"
start=$i;
fi;
fi;
prev=$i;
done;
stop=$i
echo "Start: $start / Stop: $stop";
diff=`expr $stop - $start`
anzdiff=`echo $diff | wc -m`
#anzdiff=`expr $anzdiff - 1`
beg=${start: -$anzdiff+1}
end=${stop: -$anzdiff+1}
echo "Substr: L${start:0:`expr $length - $anzdiff`}/$beg-$end"
range="L${start:0:`expr $length - $anzdiff`}/$beg-$end"
volsout="$volsout $range";
echo "Differenz: $diff Anzahl Stellen: $anzdiff"
echo "Vols $volsout"

Würde sicher auch geschickter gehen, aber für meine Zwecke genügts
 
Zuletzt bearbeitet:
Zurück