Інтерактивний редактор CSV на основі консолі


12

Хоча програми електронних таблиць для редагування файлів CSV на консолі раніше були одними з найдавніших вбивчих програм для персональних комп'ютерів, лише деякі з них та ще менше документація про них все ще активно зберігаються.

Після широкого пошуку в Інтернеті, manpages та вихідного коду, я закінчив наступні три програми, які мають основні недоліки:

  • sc: абр. для калькулятора електронних таблиць; приємний інструмент з vi-клавішами vi, але він не ставить рядки, що містять роздільник, у лапки під час експорту до розділеного формату роздільника і не може правильно імпортувати файли csv, тобто всі числа інтерпретуються як рядки
  • GNU oleo: здається, що він більше не підтримується активно з 2001 року, тому немає пакетів для великих дистрибутивів Linux
  • чайник: пропонує пакети для різних операційних систем, але використовує, наприклад, контр-інтуїтивне іменування для комірок (числа для рядків та стовпців, тобто 11, здається, призначено для рядка 1, стовпець 1) та зайвий код для графічного інтерфейсу FLTK

Різні режими Emacs також не цитують рядки, що містять роздільник, або вимагають набагато більше набору тексту для введення ешафону таблиці.

Тому я був би дуже вдячний за подолання одного з цих недоліків або будь-яких підказок щодо іншого редактора CSV на основі консолі. Насправді не потрібно робити жодних обчислень, лише редагуючи комірки або стовпці та рядки.


Відповіді:


11

Очікується, що редактор CSV розпізнає числа як такі, цитуйте рядки лише за потреби, дозволяйте розмежувачі в цитованих рядках і не згортати порожні комірки. Отже, це на екрані

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

має співвіднестись із цим у файлі

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

Олео не підтримується вже кілька років. Я встановив старий пакет на останній системі Debian і виявив, що він незручний і дуже баггі. Операції займають більше, ніж звичайна кількість натискань клавіш. Всі рядки повинні бути цитовані, і ви повинні це зробити вручну. Фільтр імпорту CSV не може обробляти коми в рядках. Числа з високою точністю не зберігаються у первісному вигляді (наприклад, 1.23456789 стає 1.234567889999999). Процес іноді стає втікачем, так що його не можна вбити з командного рядка.

Схоже, що MacroCALC, Teapot і SC - єдині електронні таблиці CLI, які все ще підтримуються.

MacroCALC не може чітко імпортувати чи експортувати файли CSV.

Чайник трохи незвичний, але він дуже простий у використанні, а посібник - це швидке читання. Імпорт / експорт CSV простий. Він має дві основні примхи. По-перше, хоча він робить автоматичне котирування рядків, він завжди цитує всі рядки. По-друге, він скоротить / розширить усі десяткові числа до точності за замовчуванням. Інтерфейс FLTK функціонує, але він баггі.

SC швидко і стабільно. Він працює аналогічно vi і приблизно сприятливий для початківців. Для перетворення між форматом SC та CSV необхідні зовнішні програми. pscІнструмент (CSV -> тільки SC) встановлюється з SC і працює наступним чином:

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

Після редагування збережіть файл командою Put , а потім скористайтеся ssconvertутилітою (SC -> CSV), яка постачається із Gnumeric:

ssconvert file.sc file.csv

Я спробував увімкнути різноманітні речі psc- ssconvertі процес здається стабільним. Числа та рядки обробляються правильно.

Альтернативним методом редагування файлів CSV було б використання текстового редактора з відповідним плагіном. І Emacs, і Vim мають їх, хоча версія Vim швидша та має більше функцій. Вони пропонують підсвічування, вирівнювання стовпців та операції блокування. Я виявив, що вони дуже повільні і нерозумні.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.