2013-04-29 2 views
8

각 요약 사이에 빈 줄이있는 1000 개의 큰 텍스트 파일이 있습니다. 이 파일을 1000 개의 텍스트 파일로 나누고 싶습니다. 내 파일이 같은텍스트 파일을 여러 파일로 분할

16503654 Three-dimensional structure of neuropeptide k bound to dodecylphosphocholine micelles.  Neuropeptide K (NPK), an N-terminally extended form of neurokinin A (NKA), represents the most potent and longest lasting vasodepressor and cardiomodulatory tachykinin reported thus far. 

16504520 Computer-aided analysis of the interactions of glutamine synthetase with its inhibitors.  Mechanism of inhibition of glutamine synthetase (EC 6.3.1.2; GS) by phosphinothricin and its analogues was studied in some detail using molecular modeling methods. 
+0

나는 하나의 디렉토리에 너무 많은 파일이나 디렉토리를 만들 방지하기 위해 제안 할 수 있습니다. 확실히 stat (2) 호출을 느리게 할 수 있습니다. 수 천 가지가 큰 문제는 아니지만 수십만 가지가 될 수 있습니다. 물론이 제한은 사용중인 시스템 (HDD), 운영 체제 및 파일 시스템에 따라 다릅니다. – TrueY

+0

가능한 복제본 [내용을 기반으로 .txt 파일을 분할] (0120-555-501) – tripleee

+0

중복 가능한 [하나의 파일로 분할] 구분 기호를 기반으로 여러 파일] (http://stackoverflow.com/questions/11313852/split-one-file-into-multiple-files-based-on-delimiter) – Gilles

답변

26

split을 사용하여 "출력 파일 당 NUMBER 행"을 2로 설정할 수 있습니다. 각 파일에는 텍스트 행과 빈 행이 각각 하나씩 있습니다.

split -l 2 file 
4

뭔가 같습니다

awk 'NF{print > $1;close($1);}' file 

이 파일 이름이 추상적 인 숫자 인으로 1000 개 파일을 생성합니다. 이 awk 코드는 이름이 첫 번째 필드 ($ 1)에서 검색되는 파일에 레코드를 씁니다. 이것은 필드 수가 0 (NF) 이상인 경우에만 수행됩니다.

+0

빠른 응답 주셔서 감사합니다. 그러나 그 awk 보여주는 일했다 : 9276016 너무 많은 파일을 엽니 다. 입력 레코드 번호 35, 파일 pmid.txt 소스 행 번호 1. 모든 파일에 동일한 줄 번호 35에서 오류가 표시 될 때마다 다른 파일을 시도했습니다. 제한이 있습니까 – shalini

+0

적절한 파일. – Guru

+0

또 다른 문제가 있습니다. 내 파일에는 결론과 결과로 시작하는 줄이 있습니다. 그런 경우에 요약 번호는 결론과 결과 이름이없는 추가 파일을 생성하는 것과 관련이 있습니다. 제발 도와주세요 – shalini

4

당신은 항상은 csplit 명령을 사용할 수 있습니다. 이것은 파일 스플리터이지만 정규식을 기반으로합니다. 의 라인을 따라

뭔가 :

csplit -ks -f /tmp/files INPUTFILENAMEGOESHERE '/^$/' 

이 안된이며, 비록 약간의 조정이 필요할 수 있습니다.

CSPLIT

+0

나는 이것을 'awk'솔루션보다 선호합니다. 청크를 구분하는 빈 줄 하나의 큰 파일 (LDIF 형식)을 분할하기 위해 '반복 패턴'과 '일치하는 줄 무시'옵션을 사용했습니다 :'csplit -m -f/tmp/files INPUTFILE '/^\ s * $/''{*} '' – bovender

+0

예고편입니다. +1. –

관련 문제