2012-08-06 2 views
1

패턴을 사용하여 파일을 분할하는 데 문제가 있습니다.패턴으로 파일 분할

내 큰 파일 패턴이 줄의 끝에있을 때 문제가 시작이

PATTERN 
data 
data 
data PATTERN 

과 같은 텍스트 하나, csplit 전체 라인을 받아 다음 파일에 넣습니다 :

data_belonging_to_the_above_file PATTERN 
data 
data 

나는 data_belonging_to_the_above_file가 이전 파일

이에 넣어해야한다는 필요는 내가 지금 사용하고 명령입니다 :

csplit data.log /PATTERN/ {*} 
+2

패턴을 새로운 줄에 항상 배치하려면 사전 처리 할 수 ​​있습니까? 'sed의/PATTERN/\ nPATTERN/g 'data.log | csplit ...'('sed' 사투리가 대체에서 \ n을 지원한다고 가정). – tripleee

+0

나는 지금 노력하고있어, 작동하지 않는 것, 뭔가 잘못하고있을 것임 : sed/regexp/& \ n/g 'file.log 오! 위 코드를 보았습니다. 다시 시도해보고 다시 돌아올 것입니다! – emmerich

+0

3 인승 감사합니다! 실제로 작동했습니다! – emmerich

답변

1

이전 의견과 유사점 내 솔루션은 대체 파일을 사용하여 파일을 사전 처리하는 것입니다. 나는이 시도 :이 행의 시작 부분이 아니다, 그것은 줄 끝에 아니라면 패턴 후 줄 바꿈을 추가하는 경우이 패턴 전에 줄 바꿈을 추가

perl -pe 's/(?<!^)(PATTERN)/\n\1/mg;s/(PATTERN)(?!$)/\1\n/mg' 

합니다. sed의 모든 버전이이 표현식을 지원하지 않기 때문에 perl을 사용합니다.

+0

고마워,하지만 나는 sed와 csplit으로 갔다. – emmerich