이후 csvcut
(부터csvkit
) 한 번에 두 개 이상의 파일을 사용하지 않고 여러 파일을 처리하는 데 사용하려면 스크립트를 작성해야 합니다.
첫 번째 매개변수는 구분 기호, 두 번째 매개변수는 추출할 열의 헤더, 나머지 매개변수는 파일 이름입니다.
파일 이름이 누락된 경우 스크립트는 표준 입력에 있어야 합니다.
이렇게되어야합니다
csvcut ';' Measure calories.csv
나는 그것에 대해 별로 익숙하지 않습니다 csvkit
. 누구든지 도와줄 수 있나요?
답변1
처리하려는 모든 CSV 파일의 열 수와 순서가 동일하다고 가정합니다.
#!/bin/sh
delim=$1
cols=$2
if [ -z "$delim" ] || [ -z "$cols" ]; then
echo 'missing delimiter and/or columns' >&2
exit 1
fi
shift 2
csvstack --delimiter "$delim" "$@" |
csvcut --columns "$cols"
스크립트는 두 개 이상의 매개변수를 사용합니다. 첫 번째는 구분 기호이고 두 번째는 추출할 열의 이름 또는 번호입니다(쉼표로 구분된 목록을 사용할 수 있음). 나머지 매개변수는 처리할 파일 이름으로 사용됩니다.
만약에오직두 개의 인수가 주어지면 표준 입력이 처리용 데이터로 사용됩니다.
이 csvstack
명령은 지정된 파일의 단일 CSV 데이터 스트림을 생성하는 데 사용되며 csvcut
필요한 열을 추출하는 데 사용됩니다. 출력의 구분 기호는 csvstack
입력에 있던 내용에서 쉼표로 변경됩니다. 여러 열을 추출하고 특정 구분 기호가 필요한 경우 결과를 전달하고 csvformat
()를 사용하여 구분 기호를 지정합니다.-D
--out-delimiter
예제를 실행하세요:
$ cat file1.csv
a;b;c
1;2;3
$ cat file2.csv
a;b;c
4;5;6
$ sh script.sh ';' 'a,c' file*
a,c
1,3
4,6