Ich mag die zusammenhängenden Bereiche gegeben eine Reihe von Terminen für Tag findenFinding Contiguous Rang
angesichts dem folgende Beispiel
2016-01-01
2016-01-02
2016-01-03
2016-01-04
2016-01-05
2016-01-06
2016-01-08
2016-01-09
2016-01-10
2016-01-11
2016-01-12
2016-01-15
2016-01-16
2016-01-17
2016-01-20
2016-01-21
2016-01-30
2016-01-31
2016-02-01
Ich erwarte, dass das folgende Ergebnis
2016-01-01-2016-01-06
2016-01-08-2016-01-12
2016-01-15-2016-01-17
2016-01-20-2016-01-21
2016-01-30-2016-01-31
2016-02-01-2016-02-01
Ich habe bin schon auf this Frage gestoßen, die fast das Gegenteil von dem ist, was ich will, aber mit ganzen Zahlen. Ich habe folgendes formuliert, was mit Ganzzahlen funktioniert.
awk 'NR==1 {l=$1; n=$1} {if ($1==n){n=$1+1} else{print l"-"n-1; l=$1 ;n=$1+1} } END {print l"-"$1}' file.txt
hmmm, auch wenn Sie es schaffen, tu das, du hast noch ein anderes Problem zu lösen, was wenn der Monat 30 Tage hat? der letzte Tag (also der 30.) würde ebenfalls gedruckt werden, da man denkt, dass der nächste Tag nicht im Text existiert. Und wenn der Monat 29 oder 31 Tage hat, müssen Sie dem Skript "erzählen", welcher Monat wie viele Tage hat, damit es weiß, wann der letzte Tag des Monats nicht gedruckt wird. – hedgehog
Wenn wir eine Monatsgrenze überschreiten, ist es in Ordnung, einen neuen Bereich zu beginnen. Ich habe das Beispiel und die Ergebnisse aktualisiert, um dies zu berücksichtigen. Auch wenn das Datum in einen Ordinalwert umgewandelt werden kann, wäre dies kein Problem – Mark