CSV 파일을 간단하고 효율적으로 연결

CSV 파일을 간단하고 효율적으로 연결

*.csv다수의 CSV 파일( )이 있는 폴더를 생각해 보세요. 그들은 모두 똑같은 헤더를 가지고 있습니다.

동일한 헤더를 가진 단일 CSV 파일로 모두 효율적으로 연결하려면 어떻게 해야 합니까?


유사하지만 더 구체적인 문제에 대한 많은 해결책을 찾았습니다.


현재 awk솔루션이 작동하지 않습니다.

$ cat concat_my_csv_files.sh
    #!/usr/bin/env zsh
    awk '
        FNR==1 && NR!=1 { while (/^<header>/) getline; }
        1 {print}
    ' $1/*.csv > $2

$ ./concat_my_csv_files /some/path/to/csv/files/ full_join.csv

내가 할 때 :

grep -F column_A full_join.csv

나는 그것과 함께 여러 줄을 본다.

답변1

awk '
    NR == 1 {print}
    FNR == 1 {next}
    {print}
' *.csv

NR변수는 모든 입력 레코드의 수입니다.
FNR변수는 단순히 현재 파일의 레코드 번호입니다.

이는 awk가 보는 첫 번째 줄(첫 번째 파일의 헤더)을 인쇄한 다음 각 파일의 첫 번째 줄을 건너뛰고 다른 모든 줄을 인쇄합니다.

답변2

기본적으로 "head -n 1 firstorany.csv; tail -n +2 *.csv"를 원합니다.

set -- *.csv
head -n 1 "$1"
tail -n +2 "$@"

*.csv가 sh 스크립트의 매개변수로 사용되는 경우 첫 번째 줄을 생략합니다.

관련 정보