분할 명령과 함께 cat 출력 사용 및 출력 디렉터리 지정

분할 명령과 함께 cat 출력 사용 및 출력 디렉터리 지정

긴 csv를 파일당 500줄로 분할하려고 합니다. 출력 파일이 특정 디렉터리에 있기를 원하고 csv의 첫 번째 줄을 생략하고 싶습니다.

split다음을 파이핑하여 CSV의 첫 번째 행을 사용하고 유지할 수 있습니다 cat.

cat file.csv | tail -n +2 | split -l 500

다음과 같이 출력 디렉터리를 지정할 수 있습니다.

split -l 500 file.csv /mnt/outdir

하지만 다음과 같이 시도하면 :

cat file.csv | tail -n +2 | split -l 500 /mnt/outdir

/mnt/outdir이것은 내가 분할하려는 파일이라고 생각 하고 나에게 split: /mnt/outdir: Is a directory.

그렇다면 split출력 디렉터리를 지정하는 동안 어떻게 출력을 명령에 파이프할 수 있습니까?

답변1

-입력 파일 이름 으로 사용됩니다 . 예를 들어

cat file.csv | tail -n +2 | split -l 500 - /mnt/outdir

하지만 여기서는 그럴 필요가 없습니다 cat.

tail -n +2 file.csv | split -l 500 - /mnt/outdir

또는 다음을 사용하십시오 /dev/stdin.

tail -n +2 file.csv | split -l 500 /dev/stdin /mnt/outdir

또는프로세스 교체:

split -l 500 <(tail -n +2 file.csv) /mnt/outdir

man split(GNU 버전) 에서 :

split [OPTION]... [FILE [PREFIX]]

설명하다

PREFIXaa, PREFIXab, ...로 출력 FILE 조각; 기본 크기는 1000줄이고 기본 접두사는 "x"입니다.

FILE이 없거나 FILE이 -이면 표준 입력을 읽습니다.

작성된 방식에서 알 수 있듯이 [FILE [PREFIX]]PREFIX를 사용하면~ 해야 하다입력 파일 이름을 제공하십시오. FILE과 PREFIX가 모두 선택사항이고서로 독립적, 로 쓰여집니다 [FILE] [PREFIX].

관련 정보