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

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

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

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

  • Как получить уникальные строки на основе значения столбца
  • Как принять абсолютное значение с помощью awk?
  • Индивидуальная сортировка и удаление двойных кавычек объединяются путем подчеркивания нескольких столбцов из файла с разделителями табуляции
  • Как изменить / упорядочить данные в файле с помощью Awk
  • добавление столбца в файл CSV с использованием awk
  • Возьмите n-й столбец файла и введите их в сценарий оболочки
  •  output.csv 10,3,2,1 6,5,4 30,28,12,9,8,7 

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

  • Возможно ли напечатать повторяющийся диапазон аргументов через cli из csv? (см. пример)
  • Объединить имя файла внутри CSV-файла для каждой строки для нескольких файлов CSV
  • Как получить число символов в одном столбце?
  • Получить определенную информацию из файла журнала
  • Как я могу извлечь текст между двумя строками в файле журнала?
  • Умножьте столбец с помощью awk
  • 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/$,//" 
    Linux и Unix - лучшая ОС в мире.