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

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

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

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

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

  • Итерация через csv и печать определенных элементов
  • Как манипулировать CSV-файлом с помощью sed или awk?
  • Дата преобразования Bash в файл csv с awk или другим средством linux (csvcut)
  • Как я могу использовать несколько операторов if внутри другого if инструкции awk-программы?
  • Как я могу показать, сколько строк позиций переместилось в diff-выход?
  • Извлечение столбца из текста, разделенного запятыми.
  • извлекать текст в файл csv из результата чтения нескольких файлов в определенные строки
  • Почему команда вставки не работает для конкатенации двух столбцов файлов, когда символы более 511?
  • 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 
    Linux и Unix - лучшая ОС в мире.