파일을 두 개로 분할

파일을 두 개로 분할

두 개의 파일로 분할해야 하는 큰 파일이 있습니다. 첫 번째 파일에서 1000줄을 선택하여 다른 파일에 넣고 첫 번째 파일에서 이 줄을 삭제해야 한다고 가정합니다.

사용해 보았지만 split여러 개의 블록이 생성됩니다.

답변1

가장 쉬운 방법은 아마도 다음을 사용하는 것 head입니다 tail.

$ head -n 1000 input-file > output1
$ tail -n +1001 input-file > output2

그러면 처음 1000줄이 에 들어가고 input-file1001 output1부터 끝까지 모든 줄이 들어갑니다.output2

답변2

나는 이것이 split최선의 접근 방식이라고 생각합니다.

-l xxxx옵션을 사용해 보십시오. 여기서 xxxx는 각 파일에서 원하는 행 수입니다(기본값은 1000).

-n yy생성된 파일 수에 대해 더 관심이 있는 경우 이 옵션을 사용하십시오. -n 2각 파일에 몇 줄이 있더라도 를 사용하면 파일이 두 부분으로만 분할됩니다.

를 사용하여 파일의 줄 수를 계산할 수 있습니다 wc -l filename. 이것은 행 옵션이 있는 "wordcount" 명령입니다.

인용하다

  • man split
  • man wc

답변3

이건 직업이야csplit:

csplit -s infile 1001 

첫 번째 부분 (라인 1001까지)과 두 번째 부분 (나머지 라인 포함)을 s자동으로 분할 합니다 . 다른 출력 파일 이름이 필요한 경우 다음 옵션을 사용할 수 있습니다 .infilexx00xx01
-f접두사:

csplit -sf piece. infile 1001 

piece.00다음과 같은 두 개의 파일을 생성합니다 .piece.01


똑똑 하다면 head다음과 같이 할 수도 있습니다.

{ head -n 1000 > 1st.out; cat > 2nd.out; } < infile

답변4

하나의 명령으로 질문에서 요구하는 작업을 수행하는 간단한 방법은 다음과 같습니다.

awk '{ if (NR <= 1000) print > "piece1"; else print > "piece2"; }' bigfile

또는 길고 직관적으로 이해할 수 있는 명령을 입력하는 것을 정말 싫어하는 사람들을 위해,

awk '{ print > ((NR <= 1000) ? "piece1" : "piece2"); }' bigfile

관련 정보