Ich habe eine Tabelle, org-mode
die das folgende Format hat:
| Name | email | number |
|------------+-----------------+--------|
| Doe, John | [email protected] | 7 |
| Doe, Jane | [email protected] | |
|------------+-----------------+--------|
| Foo, Pete | [email protected] | 5 |
|------------+-----------------+--------|
| Bar, Mary | [email protected] | 3 |
| Quux, Mike | [email protected] | |
|------------+-----------------+--------|
Ich möchte jedoch, dass die Tabelle so formatiert wird:
| Name | email | number |
|------------+-----------------+--------|
| Bar, Mary | [email protected] | 3 |
| Quux, Mike | [email protected] | |
|------------+-----------------+--------|
| Doe, John | [email protected] | 7 |
| Doe, Jane | [email protected] | |
|------------+-----------------+--------|
| Foo, Pete | [email protected] | 5 |
|------------+-----------------+--------|
Diese Tabelle sollte alphabetisch sortiert sein. Die letzten beiden Zeilen sollten also die ersten sein. Der Abstand zu den horizontalen Linien sollte erhalten bleiben. Wenn in gruppierten Spalten unterschiedliche Wörter enthalten sind, spielt es keine Rolle, wie sie sortiert sind. Der letzten Gruppe in der obigen Tabelle kann also entweder Bar
folgen Baz
oder Baz
folgen Bar
. Wie kann ich das mit Emacs machen org-mode
?
Antworten:
Leider wird
org-mode
keine Datenstruktur beibehalten, die zum Ausführen von Änderungen verwendet werden kann, die dann direkt in der Tabelle wiedergegeben werden. Daher müssen wir die Zeilen in eine Liste schlürfen, eine Listenverarbeitung durchführen und die resultierende Liste dann wieder in konvertieren Text.Im Allgemeinen lautet der Ansatz wie folgt:
org-table-hlines
; Diese Variable enthält die Zeilennummern der horizontalen LinienSpeichern Sie die Zeilen für jede Gruppe in einer Liste und fügen Sie jede Gruppe in eine Liste ein
Sortieren Sie diese Liste nach dem Wert
car
jedes Elements, um Folgendes zu erhalten:Erstellen Sie dann die Tabelle aus dieser Liste neu, indem Sie jede Gruppe durchlaufen
BEARBEITEN:
Hier ist etwas, um Ihnen den Einstieg zu erleichtern. Es ist ziemlich umständlich, aber es dient nur zur Veranschaulichung der Idee. (
rows-by-group
enthält tatsächlich Duplikate, daher ist dies nicht vollständig korrekt.)quelle