2013-12-16 2 views
0

패턴을 기반으로 파일로 분할하려고합니다. 다음 코드 : - 문제가 출력 만 인쇄되는 것을awk를 사용하여 파일을 조각으로 나눕니다.

1 
1 
1 
1 
1 
1 
2 
2 
2 
2 
3 
3 
4 
4 
4 
4 
5 
5 
5 

내가 "1"로 출력에 표시된 모든 행을 인쇄 할 :

awk "/<MY PATTERN>/{++i;}{print }" %FILE% > Temp.txt 

나에게 같은 출력을 제공합니다 데이터 행 대신 "1".

"출력에서"1 "을 생성하는 선을 인쇄하는 것과 같은 코드의 인쇄 부분에 뭔가 빠져 있다는 것을 알고 있습니다.

Windows 배치 스크립트를 사용하고 있습니다. if (i==1) print $0

+1

샘플 출력을 추가하십시오. 귀하의 설명은 매우 혼란 스럽습니다. – janos

답변

1

중 하나 귀하의 예제 출력 또는 명령이이 문제에

+0

다소 부정확 한 용어에 대해 사과드립니다. 배치 스크립트 코딩에 아직 익숙하지 않습니다. 나는 아주 가깝다는 것을 알았지 만 위의 해결책은 완벽하게 작동했습니다. 기본적으로 소스 파일을 반복하면서 조각을 추출하고 조각을 통해 반복하여 데이터 요소를 수집합니다. 나는 이것이 초등적 인 것처럼 보였다고 확신하지만, 당신은 이것으로 나의 온전함을 구했다. 아주 많이 감사! –

0

변경 print .....

  • 왜 당신이 필요 않은 i? 그것은 전혀 사용되지 않습니다. 인쇄물은 print i일까요?
  • /patter/ 확인도 의미가 없습니다. 패턴이 일치하면 ++i을 수행 한 다음 전체 행을 인쇄하십시오.
  • 질문 제목은 "파일을 여러 조각으로 나누기"에 관한 것입니다. 코드에서이 문제가 발생하지 않습니다.

당신이 우리에게 보여준 것과 같은 결과를 얻었 으면 (현재의 cmd로), 출력은 입력과 정확히 같습니다. print 라인이 print i 인 경우

, 당신은 시도 할 수 :

awk '/pattern/{++i} i==1{print}' file >newfile 

다시, 그것은 "분할"가 아니라,이 추출된다. 첫 번째 (포함)와 두 번째 (제외)의 일치하는 줄 사이의 모든 줄을 추출합니다.

관련 문제