Экспорт заголовков столбцов Excel в CSV

759
user1641165

Просто хотите узнать, как я могу экспортировать файлы Excel в CSV, сохранив многоколоночные заголовки?

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

Чтобы проиллюстрировать, это то, что я сейчас получаю

a ,,, b ,,, c ,,
1,2,3,4,5,6,7,8,9
d1, d1, d1, d1, d1, d1, d1, d1, d1
d2, d2, d2, d2, d2, d2, d2, d2, d2 ,

Это то, что я хотел бы

a, a, a, b, b, b, c, c, c
1,2,3,4,5,6,7,8,9
d1, d1, d1, d1, d1, d1, d1, d1, d1
d2, d2, d2, d2, d2, d2, d2, d2, d2

Я искал, чтобы найти ответ, однако, если я не ищу неправильный термин ... Я не могу найти много по нему.

Решение не должно быть Microsoft .... также может быть решением Linux.

Спасибо Брайан

1

1 ответ на вопрос

0
Scott

If you have exported your spreadsheet to file1.csv, as shown, do

#!/bin/sh awk -F, -v OFS=, ' NR==1 { for (i = 1; i <= NF; i++) { if ($i == "") $i = prev prev=$i } } { print }' < file1.csv > file2.csv 
  • -F, -v OFS=, sets awk’s input and output file separators to ,.
  • NR==1 means “do the following on the first record (line/row) only”.
  • The for loop looks at each field (cell) in the first row, and, if it’s blank, sets it equal to the preceding value.
  • { print } prints all records from file1.csv to file2.csv, with the first one being modified (as described above) and all others being passed through from input to output (so empty cells below the first row won’t be tampered with).