Interaktywny edytor CSV oparty na konsoli

12

Chociaż aplikacje arkuszy kalkulacyjnych do edycji plików CSV na konsoli były kiedyś jedną z najwcześniejszych aplikacji do zabijania na komputery osobiste, tylko kilka z nich, a nawet mniej dokumentacji na ich temat, jest nadal aktywnie utrzymywanych.

Po obszernym wyszukiwaniu w sieci, na stronach i w kodzie źródłowym znalazłem trzy następujące aplikacje, z których wszystkie mają podstawowe wady:

  • sc: skrót. do kalkulatora arkusza kalkulacyjnego; ładne narzędzie z kluczami vi, ale nie umieszcza ciągów zawierających separator w cudzysłowach podczas eksportowania do formatu rozdzielanego separatorem i nie może poprawnie importować plików csv, tzn. wszystkie liczby są interpretowane jako ciągi
  • GNU oleo: wydaje się, że nie jest już aktywnie utrzymywany od 2001 roku i dlatego nie ma pakietów dla głównych dystrybucji Linuksa
  • czajniczek: oferuje pakiety dla różnych systemów operacyjnych, ale wykorzystuje na przykład sprzeczne z intuicją nazewnictwo komórek (liczby dla wiersza i kolumny, tj. 11 wydaje się być przeznaczone dla wiersza 1, kolumny 1) i zbędny kod dla graficznego interfejsu użytkownika FLTK

Różne tryby Emacsa również nie cytują ciągów zawierających dobrze ogranicznik lub wymagają znacznie więcej pisania, aby wejść do rusztowania tabeli.

Dlatego byłbym bardzo wdzięczny za pokonanie jednej z tych wad lub jakichkolwiek wskazówek dotyczących innego edytora CSV opartego na konsoli. W rzeczywistości nie trzeba wykonywać żadnych obliczeń, po prostu edytować komórki lub kolumny i wiersze.

Pingwinowa Pielęgniarka
źródło
stackoverflow.com/questions/1875305/command-line-csv-viewer
Ciro Santilli 12 病毒 审查 六四 事件 法轮功

Odpowiedzi:

11

Ogólnie oczekuje się, że edytor CSV rozpoznaje liczby jako takie, cytuje ciągi znaków tylko w razie potrzeby, zezwala na ograniczniki w ciągach cytowanych i nie zwija pustych komórek. Tak to na ekranie

1                      2          3
col-one                           col,three
                       col two
This is a long string. 1.23456789 3.14

powinien korelować z tym w pliku

1,2,3
col-one,,"col,three"
,"col two",
"This is a long string.",1.23456789,3.14

Oleo nie było utrzymywane od kilku lat. Zainstalowałem stary pakiet w najnowszym systemie Debian i okazało się, że jest niezręczny i bardzo wadliwy. Operacje wymagają więcej niż zwykle liczby naciśnięć klawiszy. Wszystkie ciągi muszą być cytowane i musisz to zrobić ręcznie. Filtr importu CSV nie obsługuje przecinków w łańcuchach. Liczby o dużej precyzji nie są przechowywane w oryginalnej formie (np. 1,23456789 zmienia się na 1,234567889999999). Proces ten czasami się wymyka, więc nie można go zabić z linii poleceń.

Wygląda na to, że MacroCALC, Teapot i SC są jedynymi nadal obsługiwanymi arkuszami kalkulacyjnymi CLI.

MacroCALC nie może czysto importować ani eksportować plików CSV.

Czajnik jest trochę niezwykły, ale jest bardzo łatwy w użyciu, a instrukcja jest szybkim czytaniem. Import / eksport CSV jest prosty. Ma dwa główne dziwactwa. Po pierwsze, chociaż wykonuje automatyczne cytowanie ciągów, zawsze cytuje wszystkie ciągi. Po drugie, obetnie / rozszerzy wszystkie liczby dziesiętne do domyślnej dokładności. Interfejs FLTK działa, ale jest wadliwy.

SC jest szybki i stabilny. Działa podobnie do vi i jest mniej więcej przyjazny dla początkujących. Programy zewnętrzne są wymagane do konwersji między formatem SC a CSV. pscNarzędzie (CSV -> tylko SC) jest zainstalowany z SC i działa tak:

cat file.csv | psc -k -d, | sc

Po edycji zapisz plik za pomocą polecenia Put , a następnie użyj ssconvertnarzędzia (tylko SC -> CSV), które jest dostarczane z Gnumeric:

ssconvert file.sc file.csv

Próbowałem obrócić różne rzeczy z psc- ssconverti proces wydaje się stabilny. Liczby i ciągi znaków są obsługiwane poprawnie.

Alternatywną metodą edycji plików CSV byłoby użycie edytora tekstu z odpowiednią wtyczką. Zarówno Emacs, jak i Vim mają je, chociaż wersja Vima jest szybsza i ma więcej funkcji. Oferują one wyróżnianie, wyrównanie kolumn i operacje blokowania. Okazało się, że oba są bardzo powolne i buggy.

użytkownik60598
źródło