두 개의 파일로 분할해야 하는 큰 파일이 있습니다. 첫 번째 파일에서 1000줄을 선택하여 다른 파일에 넣고 첫 번째 파일에서 이 줄을 삭제해야 한다고 가정합니다.
사용해 보았지만 split
여러 개의 블록이 생성됩니다.
답변1
가장 쉬운 방법은 아마도 다음을 사용하는 것 head
입니다 tail
.
$ head -n 1000 input-file > output1
$ tail -n +1001 input-file > output2
그러면 처음 1000줄이 에 들어가고 input-file
1001 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
자동으로 분할 합니다 . 다른 출력 파일 이름이 필요한 경우 다음 옵션을 사용할 수 있습니다 .infile
xx00
xx01
-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