обратный порядок в csv

У меня есть файл CSV, например:

input.csv 1,2,3,10 4,5,6 7,8,9,12,28,30 

Я хочу изменить столбцы в этом файле, что означает:

 output.csv 10,3,2,1 6,5,4 30,28,12,9,8,7 

Я знаю, как это сделать для фиксированного количества столбцов, но если количество столбцов меняется, что мне делать?

5 Solutions collect form web for “обратный порядок в csv”

С perl , если поля в вашем CSV не имеют встроенных запятых, строк новой строки и т. Д .:

 perl -lpe '$_ = join ",", reverse split /,/' input.csv 

CSV не всегда может обрабатываться простым разбиением строк, а затем запятыми, так как поля иногда могут иметь запятые или новые строки. Чтобы иметь возможность включать эти символы, поля должны быть указаны.

Это простое решение, которое вы можете вызывать из оболочки, которая использует правильный синтаксический анализатор csv:

 ruby -e 'require "csv"; CSV.filter(&:reverse!)' < input.csv > output.csv 

Если у вас нет рубина, это работает как с python 2, так и с 3.

 python -c $'import csv; import sys\nfor r in csv.reader(sys.stdin): r.reverse(); csv.writer(sys.stdout).writerow(r)' < input.csv > output.csv 

Здесь он находится в нескольких строках:

 python < input.csv > output.csv -c ' import csv import sys for r in csv.reader(sys.stdin): r.reverse() csv.writer(sys.stdout).writerow(r) ' 

Вот несколько примеров, где это будет работать, когда решения с простым разделом запятой не будут работать:

input.csv

 1,"2,3" 

output.csv

 "2,3",1 

input.csv

 1," 2" 

output.csv

 " 2",1 

Вы можете использовать awk :

 awk 'BEGIN{ FS=OFS="," # set the field delimiter } NF{ # execute only on non empty line for(i=NF;i>1;i--) # loop through all element except the first one printf "%s", $i OFS; # print the parameter together with the comma printf "%s", $1 "\n" # print last element }' input.csv 
 perl -l -a -F, -n -e 'print join ("," , reverse @F)' input.csv 
 awk -F, '{for(i=NF;i>=1;i--)printf("%s,",$i);printf "\n"}' input.txt | sed "s/$,//" 
  • удалите столбец массива разной длины
  • Как выбрать строки из файла CSV на основе разных значений столбцов?
  • Обработка файлов CSV
  • Сортировка файла CSV, но не его заголовок
  • Извлечь имена файлов со структурой каталога в CSV-файл (отдельный файл csv для каждого имени изображения)
  • Как получить строки, чей n-й столбец содержит m-й столбец
  • Итерация через csv и печать определенных элементов
  • Сортировка файла CSV по первому столбцу, игнорирование заголовка
  • удалить строки в файле csv старше 7 дней
  • Замена значений в одном файле значениями в другом файле в bash
  • solaris awk проблемы с датой и заявлениями
  • Удалите все заглавные буквы из определенного столбца в файле CSV
  • Interesting Posts

    Двоичные в шестнадцатеричные и десятичные в сценарии оболочки

    Разрешение отрицалось, но почему?

    Мониторинг журналов с использованием сценария оболочки

    Как я могу запустить отдельный сеанс X на другом физическом дисплее?

    Что происходит, когда я нажимаю «Завершить работу» из графического интерфейса?

    Awk напечатайте номер по ширине и округлите его вверх

    В чем разница между Ubuntu и Debian?

    У curl есть опция -no-check-certificate, например wget?

    Интерактивный ssh ​​работает, но не rsync или scp, на OSX

    Отключить раздел USB от автоматической установки на Gnome 3.16

    Заставить процесс игнорировать / отбрасывать накопленный вход во время приостановки?

    Solaris 10 – найти сервис, подключенный к порту прослушивания

    Возможно ли избежать двойных кавычек и получить правильный формат json?

    Разница между / bin и / usr / bin

    В Solaris 7 Box пытается получить X-библиотеку расширений для работы с использованием x11vnc

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