동일한 파이프라인에서 결과 파일 분할 및 편집

동일한 파이프라인에서 결과 파일 분할 및 편집

매분마다 폴더에서 새 파일을 감지하고 구문 분석하는 스크립트가 있습니다.

최근에 대용량 파일에 문제가 생겼습니다. 파일이 크면 파서가 중단됩니다.

그래서 크기가 너무 크면 분리합니다. 나는 다음 명령을 사용하고 있습니다 :

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 {}"  \;

관련 정보