패턴이 발견되면 레코드세트 삭제

패턴이 발견되면 레코드세트 삭제

중복일 수도 있지만 이 사람을 신고하지 마세요. 저는 수동 작업을 하고 있습니다.정확한 솔루션을 얻을 수 없습니다가능한 한 간단하게 만들기 위해 지금까지 45000개 행 중 5000개를 제거했습니다.

알파 주문

시설: 201 ZZZ 컨트리
버그 추적: Kotak: NA 흡수: NA 명사: XP

                  오오오오오오오오
                  오오오오오오 린
AMO 주문 번호 P/PROLHSCNDKMDDCN LAM uii ii oo
--- -------- --- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --- - -- -- --

    BZ90rty K/K AA AA AA NA XP AP NA NA NA NA NA NA AP AP OOL XP IP N
a ZX A/A WD WD WD NA WD WD NA NA NA NA NA NA WD WD OOL WD IP Y
매장하라고 명령했다

시설: 201 ZZZ 컨트리
버그 추적: Kotak: NA 흡수: NA 명사: XP

                  오오오오오오오오
                  오오오오오오 린
AMO 주문 번호 P/PROLHSCNDKMDDCN LAM uii ii oo
--- -------- --- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --- - -- -- --

    BZ903901 A/A AA AA AA NA XP AP NA NA NA NA NA NA AP AP OOL XP IP N
a ZX A/A WD WD WD NA WD WD NA NA NA NA NA NA WD WD OOL WD IP Y

알루미늄 주문

시설: 201 ZZZ 컨트리
잘못된 경로: Kotak: NA PAT: NA 명사: AP

                  오오오오오오오오
                  오오오오오오 린
AMO 주문 번호 P/PROLHSCNDKMDDCN LAM uii ii oo
--- -------- --- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --- - -- -- --

    BZ903901 U/U AA AA AA NA XP AP NA NA NA NA NA NA AP AP OOL XP IP N
a ZX Y/Y WD WD WD NA WD WD NA NA NA NA NA NA WD WD OOL WD IP Y
AL123 주문...계속...

&&가 NOUN :XP발견 되면 파일에서 이러한 유형의 레코드를 삭제합니다.A/AK/K

대부분의 스크립트가 실패하는 이유는 다음과 같은 조건 때문입니다(NOUN :AP 및 A/A && K/K가 있는 경우). 또한 해당 레코드도 표시합니다... 또는 다음과 같은 조건(A/Z &&가 있는 NOUN :XP인 경우) K /Z) 그 기록도 나오네요... 이 기록을 보관하지 않고 삭제해야겠어요.

출력 ---->

알파 주문
시설: 201 ZZZ 컨트리
버그 추적: Kotak: NA 흡수: NA 명사: XP

                  오오오오오오오오
                  오오오오오오 린
AMO 주문 번호 P/PROLHSCNDKMDDCN LAM uii ii oo
--- -------- --- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --- - -- -- --

    BZ90rty K/K AA AA AA NA XP AP NA NA NA NA NA NA AP AP OOL XP IP N
a ZX A/A WD WD WD NA WD WD NA NA NA NA NA NA WD WD OOL WD IP Y

NOUN [small space is there]:XP행과 열은 동적입니다 .

답변1

awk '
    function print_record() {
        if (record ~ /Stack :IR/ && record ~ /F\/F/ && record ~ /X\/X/) return
        printf "%s", record
    }
    tolower($1) == "order" {if (NR > 1) print_record(); record = ""}
    {record = record $0 ORS}
    END {print_record()}
' file

편집 내용에 따라 변경해야 할 사항은 다음과 같습니다.

function print_record() {
    if (record ~ /NOUN: XP/ && record ~ /A\/A/ && record ~ /K\/K/)
        printf "%s", record
}

관련 정보