Я использую следующую командную строку в Linux для сохранения содержимого моего входного файла (текстовый файл, состоящий из столбцов) в виде электронной таблицы:
less input_file > out_put.csv
Мой выходной файл:
Проблема в выходной таблице: все столбцы входного файла слиплись в один столбец выходного файла (таблица CSV).
Как мне пересмотреть мой простой код, чтобы сделать его более эффективным для сохранения моего txt-файла в виде текста с разделителями табуляции и электронной таблицы.
решение1
Прежде всего, less
это просто пейджер, это инструмент, который позволяет вам читать файлы. То, что вы делаете, это то же самое, что копировать input_file в out_put.csv ( cp input_file out_put.csv
). Вы никак не меняете содержимое.
Таким образом, чтобы прочитать его как электронную таблицу, например, используя libreoffice
, вам нужно будет открыть приложение для работы с электронными таблицами, затем открыть input_file
и использовать пробел в качестве разделителя столбцов:
Теперь, если вы действительно хотите преобразовать свой файл взапятаяформат разделенных значений ( .csv
), вам нужно будет добавить запятые. Эта команда заменит все пробелы запятыми в каждой из ваших строк и сохранит вывод как output.csv
:
sed 's/ */,/g' input_file > output.csv
Команда выше, sed
и вот я ее используюоператор подстановки. Общий формат — , s/pattern/replacement/
который заменит pattern
на replacement
. g
В конце заставляет его заменитьвсевхождений шаблона в каждой строке, без него он заменит только первое. Шаблон, который я ему дал, был (пробел), за которым следовали 0 или более (вот что
*
означает) пробелов ( *
), и я сказал ему заменить на ,
. Это по сути означает «заменить любые вхождения одного или более пробелов запятой».