여러 출력 파일로 이동하기 위해 표준 출력을 분할하는 방법은 무엇입니까?

여러 출력 파일로 이동하기 위해 표준 출력을 분할하는 방법은 무엇입니까?

command표준 출력으로 많은 행을 인쇄하는 명령이 있다고 가정해 보겠습니다 .

line1
line2
.....
lineN

출력을 디스크에 저장하고 싶지만 단일 파일이 아니라 각각 1000줄의 stdout이 포함된 일련의 파일로 저장하고 싶습니다.

file0001.txt:
-------------
line1
....
line1000

file0002.txt:
-------------
line1001
....
line2000

etc

나는 대답을 인터넷 검색해 보았지만 Google이 tee이 경우 쓸모 없는 명령을 입력하라는 메시지를 표시할 때마다. 어쩌면 내가 잘못된 쿼리를 입력했을 수도 있습니다.

답변1

파일을 저장한 후 split줄 수에 따라 언제든지 파일을 파일 블록 또는 여러 파일로 분할할 수 있습니다.

split -l 1000 output_file

아니면 시도해 보는 것이 더 좋습니다

command | split -l 1000 -

이렇게 하면 출력 스트림이 1000줄마다 파일로 분할됩니다(기본값은 -l 옵션이 없으면 1000줄입니다).

다음 명령은 출력이 생성되고 저장을 위해 파일로 분할될 때 생성된 파일 이름에 접두사를 추가하거나 강제 적용할 수 있는 추가적인 유연성을 제공합니다.

command | split -l 1000 - small-

답변2

Bash 스크립트를 사용할 수 있습니다lines.bash

#!/bin/bash
a=0
while IFS='' read -r line
do
  printf -v filename "%04d.txt" "$((a++/1000))"
  echo "$line" >> $filename
done

다음과 같이 사용하십시오.

cat long_file.txt | bash lines.bash

내가 알아차린 유일한 문제는 *로그인에 관한 것입니다 long_file.txt(누군가가 그것을 고칠 수 있습니까).

관련 정보