command
stdout에 많은 수의 행을 인쇄 하는 명령 이 있다고 가정 해보십시오.
line1
line2
.....
lineN
출력을 디스크에 저장하려고하지만 단일 파일이 아니라 각각 1000 줄의 stdout을 갖는 일련의 파일로 저장하려고합니다.
file0001.txt:
-------------
line1
....
line1000
file0002.txt:
-------------
line1001
....
line2000
etc
나는 대답을 구글하려고 시도했지만 구글이 나를 tee
명령 할 때 마다이 상황에서는 쓸모가 없다. 아마 잘못된 쿼리를 입력하고 있습니다.
답변
파일 저장을 마친 후에는 항상 줄 수에 split
따라 파일을 여러 개의 파일 또는 여러 개의 파일로 만들 수 있습니다.
split -l 1000 output_file
또는 더 나은 시도
command | split -l 1000 -
이것은 출력 스트림을 1000 줄마다 파일로 분할합니다 (기본값은 -l 옵션이없는 1000 줄).
아래 명령을 사용하면 출력을 생성하고 파일에 저장하기 위해 분할 할 때 생성되는 파일 이름에 접두사를 추가하거나 적용 할 수있는 추가 유연성이 제공됩니다.
command | split -l 1000 - small-
답변
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
(누군가 수정할 수 있음).