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
(누군가가 그것을 고칠 수 있습니까).