예상을 사용하여 정규식을 사용하여 콘텐츠를 일치시키는 방법은 무엇입니까?

예상을 사용하여 정규식을 사용하여 콘텐츠를 일치시키는 방법은 무엇입니까?

저는 정규 표현식을 처음 사용합니다. 아래 입력 스트림을 구문 분석해 보세요. 정규식으로 구문 분석하는 방법. CNTXID가 늘어나고 있으니까요.

"Data"
                  CNTXID = 1
                      AP = 99
                     DEF = FALSE
               
                  CNTXID = 2
                      AP = 88
                     DEF = TRUE
               
                  CNTXID = 3
                      AP = 77
                     DEF = FALSE

그리고 CNTXID는 고정되어 있지 않습니다.

원하는 출력

CNTXID_1 = 1
    AP_1 = 99
   DEF_1 = FALSE

CNTXID_2 = 2
    AP_2 = 88
   DEF_2 = TRUE

CNTXID_3 = 3
    AP_3 = 77
   DEF_3 = FALSE

답변1

expect데이터를 수정하는 데 사용해서는 안 됩니다. "메시지 수신 - 응답 전송"을 위해 설계되었습니다. 당신이 설명하는 것은 단지 데이터 형식을 다시 지정하는 것입니다.

이는 Perl을 사용하여 쉽게 수행할 수 있습니다.

#!/bin/perl
my $n=0;
while(<>) {
    if (/CNTXID = (\d+)/) {
        $n = $1;
    }
    if (/(\S+) = (\S+)/) {
        printf "%7s_%d = %s\n", $1, $n, $2;
    } elsif (/$\s*^/) {
        print "\n";
    }
}

관련 정보