Преобразование нескольких файлов из разделителя табуляции в CSV-файл с разделителями-запятыми

Как я могу изменить файлы с расширением .txt табуляцией в CSV-файлы без ущерба для формата?

Мне удалось изменить тип с .txt на .csv но все данные, разделенные вкладкой, были помещены в одну ячейку Excel.

Поэтому я прошу здесь:

  1. как изменить вкладку в запятую для многих файлов?
  2. как изменить файлы с .txt на .csv ?

3 Solutions collect form web for “Преобразование нескольких файлов из разделителя табуляции в CSV-файл с разделителями-запятыми”

Вы можете сделать:

 perl -MText::CSV -F'\t' -i.orig -lape ' BEGIN{$c = Text::CSV->new({binary=>1, eol=>""})} $_ = $c->string if $c->combine(@F)' ./*.txt 

Чтобы преобразовать в правильный CSV (см. perldoc Text::CSV если вам нужно настроить формат CSV). Если вам нужно только конвертировать вкладки в запятые, это просто вопрос tr '\t' , < file.txt > file.csv .

Использование csvkit :

Предполагая, что входной файл

 a 10,000 eu aoeu ao "hello world" u aoeu 

где все поля имеют разделитель табуляции и где есть вкладка между hello и world (хотя два слова принадлежат одному полю, указанному в кавычки).

 $ csvformat -t file.txt a,"10,000",e,u a,o,e,u a,o,hello world,u a,o,e,u 

Опция -t в csvformat сообщает утилите, что вход разделен на вкладку.

Обратите внимание, что 10,000 должным образом процитированы и что цитаты вокруг hello<tab>world были удалены, так как теперь это недвусмысленно.

Для принудительного цитирования всех полей:

 $ csvformat -t -U 1 file.txt "a","10,000","e","u" "a","o","e","u" "a","o","hello world","u" "a","o","e","u" 

Если на входе используется другой символ кавычки, как в

 $ cat file.txt a 10,000 eu aoeu ao 'quote: "hello world"' u aoeu 

затем выполните следующее:

 $ csvformat -t -q "'" file.txt a,"10,000",e,u a,o,e,u a,o,"quote: ""hello world""",u a,o,e,u 

Мы указываем, что одиночная кавычка используется во входных данных с -q "'" .


Чтобы запустить это в нескольких файлах, конвертируя их из разделителя с разделителями табуляции в CSV, предполагая, что мы хотим обработать все .txt файлы в текущем каталоге:

 for name in ./*.txt; do csvformat -t "$name" >"${name%.txt}.csv" done 

Бит ${name%.txt}.csv удаляет расширение .txt из имени файла и вместо этого добавляет расширение .csv . Это также можно записать в виде

 for name in ./*.txt; do csvformat -t "$name" >"./$( basename "$name" .txt ).csv" done 

Затем вы получите набор (нетронутых оригинальных) .txt файлов вместе со своими соответствующими .csv файлами.

Вы можете попробовать выполнить команду ниже

 sed 's/\t/,/g' yourtab.txt > updatefile.csv 
  • Присоединение нескольких команд sed в одном скрипте для обработки CSV-файла
  • создавать данные для чтения текста из файла
  • объединить файлы csv, сохранить запятую внутри кавычек
  • Вычислять хиты в течение промежутка времени из файла журнала
  • Не удалось распечатать awk'ed datum в сценарии bash
  • Обрезать последние символы из строки
  • Соответствие 3 или более слов из полей в отдельных файлах csv
  • объединить файлы csv по первому столбцу
  • Удалить столбец из CSV
  • Как извлечь второй и третий столбцы из файла CSV с помощью awk?
  • linux при чтении для переключения столбцов, если столбец 3 меньше столбца 2
  • Как найти и заменить новую строку?
  • Interesting Posts

    Пакетный импорт файлов .sql

    Домашний каталог для пользователей системы

    Как я могу отобразить страницу руководства?

    Как добавить тему gtk2 в KDE?

    Сбросьте шаблон слова в конце строки, используя sed

    Есть ли версия Audacity, которая будет работать на Alpine Linux?

    удалить пробелы из всех элементов в каталоге и подкаталоге

    Возможно ли изменить размер текущего активного раздела и как это сделать?

    Чтобы настроить скрипт для отправки электронной почты только тогда, когда команда diff дает разницу

    Карта чтения / записи файла для получения вывода / отправки ввода в скрипт?

    Есть ли общий способ вывести pdf-файлы в удобочитаемом формате в командной строке и сохранить общий макет?

    Как предотвратить подавление звука при переключении пользователя?

    Как установить гостевые дополнения virtualbox в TrueOS?

    клавиши со стрелками не работают с сеансом telnet терминала (termnetd)

    Как передать параметры из xrdp в vnc viewer, например viewonly?

    Linux и Unix - лучшая ОС в мире.