매분마다 폴더에서 새 파일을 감지하고 구문 분석하는 스크립트가 있습니다.
최근에 대용량 파일에 문제가 생겼습니다. 파일이 크면 파서가 중단됩니다.
그래서 크기가 너무 크면 분리합니다. 나는 다음 명령을 사용하고 있습니다 :
split -n l/5 -d filename filename
청크 수를 세고 파서가 허용할 수 있는 크기로 크기를 나눕니다.
이제 까다로운 부분이 나옵니다. 분할하려는 파일의 처음 두 줄은 매우 중요하므로 결과 파일의 맨 위에 이 두 줄을 추가해야 합니다.
동일한 명령줄에서 생성된 분할 파일을 어떻게든 구문 분석할 수 있다면 좋을 것입니다... 크기가 다양하고 새 파일이 20개일 수도 있고 2개만 있을 수도 있으므로 결과의 원본 파일이 무엇인지 예측할 수 없습니다. 파일.
답변1
다음을 사용할 수 있습니다 ed
(파일의 처음 두 줄이 점이 아닌 경우).
split -n l/5 -d filename split_filename
for i in split_filename* ; do
(echo 1i && head -n 2 filename && echo -e ".\nw" ) | ed -s $i
done
# if necessary remove double header from first file:
sed -i "1,2d" split_filenameaa
답변2
추악하지만 작동해야합니다.
split -n l/5 -d filename split_filename && find ./ -name 'split_filename*' -exec sh -c "echo `head -2 filename` | cat - {} > temp && mv temp {}" \;