로그 파일이 있는데 여러 파일로 분할하고 싶습니다.
목차
*** Configuration Database
*** Logs
*** Configuration Logs
*** Query Logs
.
.
and so on
문제는 섹션 제목이 섹션 사이에 적절한 데이터나 로그와 함께 본문 텍스트에 다시 나타나기 때문에 각 제목의 두 번째 인스턴스를 검색하고 해당 제목의 두 번째 인스턴스에 데이터를 복사해야 한다는 것입니다. 다음 제목.
몸
*** Configuration Database
(Data/Logs)
*** Logs
(Data/Logs)
*** Configuration Logs
(Data/Logs)
*** Query Logs
(Data/Logs)
기본적으로 디버그 텍스트 파일을 가져오고 이에 대해 스크립트를 실행한 다음 원본 파일을 그대로 유지하면서 디렉터리의 각 섹션마다 하나씩 여러 텍스트 파일로 나누고 싶습니다. 따라서 기본적으로 새로운 섹션이 시작될 때까지 각 섹션의 모든 데이터가 포함된 debug.txt, Configuration Database.txt, Logs.txt 등이 있습니다. 이것은 내 능력을 넘어서는 것이므로 어떤 도움이라도 크게 감사하겠습니다 :)
답변1
이 시도:
awk '/^[*][*][*] /{ if ($0 in seen) fname=$0; else seen[$0];} fname{print>fname}' file
어떻게 작동하나요?
awk는 암시적으로 파일을 한 줄씩 읽습니다. 읽은 각 행에 대해 다음을 수행합니다.
/^[*][*][*] /{ if ($0 in seen) fname=$0; else seen[$0];}
별 3개와 공백으로 시작하는 줄에 대해 이전에 해당 줄을 본 적이 있는지 확인합니다. 있는 경우
fname
해당 행으로 설정합니다. 그렇지 않은 경우에는seen
행을 한 번 본 것을 나타내기 위해 연관 배열을 업데이트합니다 .fname{print>fname}
null이 아닌 경우
fname
현재 줄을 이름이 지정된 파일에 씁니다fname
.