이와 같은 파일이 주어지면
First,Last,Age
Cory,Klein,27
John Jacob,Smith,30
출력이 다음과 같이 표시되도록 내용을 바꿀 수 있는 명령줄 유틸리티가 있습니까?
First,Cory,John Jacob
Last,Klein,Smith
Age,27,30
답변1
~에서https://stackoverflow.com/a/2776078:
$ apt-get install csvtool
그런 다음 변환
$ csvtool transpose input.csv > ouput.csv
아니면 파이프라인에서
$ ... | csvtool transpose - | ...
답변2
따옴표 없이 단순화된 CSV 변형을 사용하지 않는 한(필드에 쉼표가 표시되지 않도록) POSIX 도구만 사용하면 CSV 구문 분석을 쉽게 수행할 수 없습니다. 그럼에도 불구하고 awk
다른 텍스트 처리 도구를 사용하여 이 작업을 수행하는 것은 쉽지 않은 것 같습니다. Perl을 다음과 같이 사용할 수 있습니다.Text::CSV
, 파이썬 및csv
, R 및read.csv
, 루비 대.CSV, ... (Perl을 제외하고 이들 모두는 해당 언어의 표준 라이브러리의 일부입니다.)
예를 들어 Python에서는 다음과 같습니다.
import csv, sys
rows = list(csv.reader(sys.stdin))
writer = csv.writer(sys.stdout)
for col in xrange(0, len(rows[0])):
writer.writerow([row[col] for row in rows])
답변3
ruby -rcsv -e 'puts CSV.parse(STDIN).transpose.map &:to_csv' < in.csv > out.csv
답변4
CSV 파일이 다음과 같다고 가정합니다.단순한CSV 파일, 즉 필드에 구분 기호나 줄 바꿈이 포함되어 있지 않음을 의미합니다.GNU 데이터 혼합:
datamash transpose --field-separator=',' < input.csv