CSV 파일 만들기

CSV 파일 만들기

서로 다른 데이터 세트를 포함하는 두 개의 서로 다른 textfiles.txt(textfile1.txt 및 textfile2.txt)가 있습니다. 두 개의 개별 .txt 파일을 단일 CSV 파일로 컴파일할 수 있습니까?

고쳐 쓰다

textfile1.txt에는 다음 형식으로 작성된 값이 있습니다.

 20
 31
 18
 -11
 12
 19

textfile2.txt에는 다음 형식으로 작성된 값이 있습니다.

100.000 200.000 300.000
101.000 201.000 301.000
102.000 202.000 302.000
103.000 203.000 303.000
104.000 204.000 304.000
105.000 205.000 305.000

내 출력을 다음 형식으로 만들고 싶습니다.

 20,100.000,200.000,300.000
 31,101.000,201.000,-301.000
 18,-102.000,202.000,302.000
-11,103.000,203.000,303.000
 12,104.000,204.000,304.000
 19,105.000,-205.000,305.000

답변1

paste파일을 나란히 연결합니다.

paste -d, file1 file2

파일에 쉼표나 따옴표가 포함될 수 있지만 CSV 데이터 자체가 아닌 경우 먼저 모두 인용해야 합니다.

paste -d, \
 $<( sed 's/"/""/g;s/^/"/;s/$/"' < file1 ) \
 $<( sed 's/"/""/g;s/^/"/;s/$/"' < file1 )

또는 특수 문자만 포함된 줄

paste -d, \
 $<( sed '/[",]/ { s/"/""/g;s/^/"/;s/$/"; }' < file1 ) \
 $<( sed '/[",]/ { s/"/""/g;s/^/"/;s/$/"; }' < file2 )

답변2

두 개의 파일을 병합하고 싶다면 cat textfile1.txt textfile2.txt > combined.txt그렇게 할 수 있습니다.

답변3

두 번째 파일이 탭을 구분 기호로 사용한다고 가정하면 다음을 사용하여 첫 번째 파일을 첫 번째 열로 두 번째 파일에 추가할 수 있습니다.

paste textfile1.txt textfile2.txt

결과는 TSV 데이터 세트가 됩니다(데이터에 줄 바꿈이 포함된 필드가 포함되어 있지 않다고 가정).

20      100.000 200.000 300.000
31      101.000 201.000 301.000
18      102.000 202.000 302.000
-11     103.000 203.000 303.000
12      104.000 204.000 304.000
19      105.000 205.000 305.000

이를 CSV로 변환하려면 탭을 쉼표로 변경 tr '\t' ','하거나, 더 복잡한 데이터(내장 탭)가 있는 경우 Miller( mlr)와 같은 CSV 인식 도구를 사용하면 됩니다.

paste textfile1.txt textfile2.txt |
mlr --itsv --ocsv cat

옵션 --itsv(입력은 TSV) 및 --ocsv(출력은 CSV)의 조합을 단일 옵션으로 결합할 수 있습니다 --t2c.

관련 정보