2011-09-16 4 views
1

행에 숫자 데이터가 기록 된 텍스트 파일이 있습니다. 산재 된 입력 선 (미지수)과 잔차 선 (최소화 된 것으로 가정)이 있습니다. 나는 반복 솔버가 다양한 경우를 다루는 방법을 조사하고 있으며, 이전 잔차 선 (같은 줄에 두 줄을 더 잘 표시 한 것) (텍스트로)과 다른 다른 나머지 줄에있는 모든 (공백으로 구분 된) 필드를 강조하고 싶습니다. 정규 표현식으로). 도움이된다면 나는 마음에 드는 선의 처음 부분을 장식 할 수있다.이전 행과 다른 열 강조 표시

Vim과 일부 regexp 매직에서는 가능한가요?

예제 파일 :

input 1 2 3 4 5 6 
errors .2 .2 .3 .1 0 0 
input 1 2.1 2.9 4 5 6 ## here, 2.1 and 2.9 should be highlighted 
errors .21 .3 .44 .3 0 0 
input 1 2 3 3.9 5.2 6 ## here, 2, 3, 3.9 and 5.2 should be highlighted 
errors .2 .2 .34 .9 1 0 

참고 : 나는 파이썬 스크립트 추출 차이를 코딩 할 수 있지만, 나는 실제 데이터 변경 사항을 모두 살펴 갖고 싶어. Vim에서 작동하지 않으면 파이썬으로 처리하고 강조된 HTML을 출력하지만 자동 접기 기능은 사용할 수 없습니다.

난 당신이 오히려 비교 정규식보다 배열을 사용하는 경우, 그것은 훨씬 쉽게 될 수 있다는 생각

답변

0

:

<?php 
$lastRow=array() 
$h=fopen('file','r'); 
while ($r=fgetcsv($h,0,' ')) // Retrieve a line into an array and split on spaces 
{ 
    if (count($lastRow)==0) 
    { 
     $lastRow=$r; // Store last line 
    } 

    $count++; 

    if ($r[0]=='input') 
    { 
     /* 
     * this won't find any differences the first run through 
     */ 
     $diffs=array_diff($lastRow,$r); // Anything that has changed from the last "input" line is now in $diffs 
     $lastRow=$r; // Only copy into $lastRow if it's an "input" line 
    } 
    /* 
    * Put your code to output line here with relevant CSS for highlighting 
    */ 
} 
fclose($h); 

?> 

이 코드를 테스트하지 적이 있지만 나는 그것이 생각 당신은 어떻게 할 수 보여줍니다 정규식을 탐색하지 않고 해결책을 얻으십시오

+0

정규식을 사용하는 이유는 ** vim ** 구문 강조 패턴을 정리하기 위해서였습니다. 그래도 고마워. – eudoxos

+0

죄송합니다 - 먼저 태그를 확인 했어야합니다. 내가 PHP 모드 였어. 행운을 빕니다 – DaveyBoy

관련 문제