![Excel 열 헤더를 csv로 내보내기](https://rvso.com/image/1414672/Excel%20%EC%97%B4%20%ED%97%A4%EB%8D%94%EB%A5%BC%20csv%EB%A1%9C%20%EB%82%B4%EB%B3%B4%EB%82%B4%EA%B8%B0.png)
여러 열 헤더를 유지하면서 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
file1.csv
표시된 대로 스프레드시트를 로 내보낸 경우 다음을 수행하십시오.
#!/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=,
awk
의 입력 및 출력 파일 구분 기호 를,
.NR==1
"첫 번째 레코드(라인/행)에서만 다음을 수행합니다"를 의미합니다.- 루프
for
는 첫 번째 행의 각 필드(셀)를 살펴보고 비어 있는 경우 이전 값과 동일하게 설정합니다. { print }
file1.csv
에서 까지 의 모든 레코드를 인쇄합니다file2.csv
. 첫 번째 레코드는 위에서 설명한 대로 수정되고 다른 모든 레코드는 입력에서 출력으로 전달됩니다(따라서 첫 번째 행 아래의 빈 셀은 변경되지 않습니다).