특정 헤더 아래의 줄을 복사하고 원본 log.txt에서 새 텍스트 파일을 생성하는 스크립트

특정 헤더 아래의 줄을 복사하고 원본 log.txt에서 새 텍스트 파일을 생성하는 스크립트

20,000줄이 포함된 log.txt 파일이 있습니다. 각 선에는 그룹으로 구분된 숫자와 xyz 평면 좌표가 있습니다. 컬렉션은 log.txt에서 ABC_1, ABC_2와 같은 이름으로 식별할 수 있습니다.

이 log.txt 파일의 모든 세트 데이터를 세트의 모든 데이터(예: ABC_1)를 포함해야 하는 별도의 텍스트 파일로 분리하고 싶습니다.

내 log.txt는 아래와 같습니다.

ABC_1: 
1, (xyz coordinates)
2, (xyz coordinates)
3, (xyz coordinates)

 .... Continue
ABC_2: 
101, (xyz coordinates)
102, (xyz coordinates)
103, (xyz coordinates)

 .... Continue
ABC_3: 
201, (xyz coordinates)
202, (xyz coordinates)
203, (xyz coordinates)

.... Continue
ABC_99: 
9991, (xyz coordinates)
9992, (xyz coordinates)
9993, (xyz coordinates)

.... Continue

ABC_1.TXT단일 log.txt 파일에서 99개의 개별 텍스트 파일을 제공할 수 있고 이름을 set name , ABC_2.TXT... to ABC_99.TXTfrom log.txt 로 지정하는 스크립트를 만들고 싶습니다 .

답변1

csplit을 사용하여

csplit -s -b %d.txt -f ABC_ Log.txt /ABC_/ {*}

답변2

Awk해결책:

awk '/^ABC_/{
         if (fn) close(fn); sub(":", "", $1);
         fn = $1".txt"; next
    }
    { print > fn }' Log.txt

관련 정보