![특정 헤더 아래의 줄을 복사하고 원본 log.txt에서 새 텍스트 파일을 생성하는 스크립트](https://linux55.com/image/132841/%ED%8A%B9%EC%A0%95%20%ED%97%A4%EB%8D%94%20%EC%95%84%EB%9E%98%EC%9D%98%20%EC%A4%84%EC%9D%84%20%EB%B3%B5%EC%82%AC%ED%95%98%EA%B3%A0%20%EC%9B%90%EB%B3%B8%20log.txt%EC%97%90%EC%84%9C%20%EC%83%88%20%ED%85%8D%EC%8A%A4%ED%8A%B8%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%83%9D%EC%84%B1%ED%95%98%EB%8A%94%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8.png)
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.TXT
from 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