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

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

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

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

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

  • Есть ли надежный инструмент командной строки для обработки CSV-файлов?
  • Как объединить файлы CSV
  • Нужен сценарий оболочки для преобразования CSV в формат Apache httpd
  • Почему команда вставки не работает для конкатенации двух столбцов файлов, когда символы более 511?
  • Удалить конкретный столбец, если он существует в файле CSV
  • Учитывая CSV-файл, как мне удалить контент между 2-й и 3-й вкладками каждой строки?
  • Как распечатать все строки файла с повторяющимися значениями в определенном столбце
  • Извлечь информацию о шаге из аудиофайла
  • 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 
    Interesting Posts
    Linux и Unix - лучшая ОС в мире.