Excluir conjunto de registros se o padrão for encontrado

1

Pode ser duplicado, mas não sinalize isso, Pessoal estou realizando tarefas manuais fazendo algum trabalho não conseguindo obter a solução exata até agora excluiu 5000 linhas de fora 45000, tentando tornar tão simples quanto possível

ORDER ALPHA

Facility: 201  ZZZ        COUNTRY
Wrong Trace:       Kotak: NA       Soak: NA        NOUN: XP

                  O  O  O  O  O  O  O  O  O  O  O  O  O  O
                  O  O  O  O  O  O  O  O  O  O  O  O  O  O   LAM
AMO ORDER #   P/P R  O  L  H  S  C  N  D  K  M  D  D  C  N   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
ORDER BURY

Facility: 201  ZZZ        COUNTRY
Wrong Trace:       Kotak: NA       Soak: NA        NOUN: XP

                  O  O  O  O  O  O  O  O  O  O  O  O  O  O
                  O  O  O  O  O  O  O  O  O  O  O  O  O  O   LAM
AMO ORDER #   P/P R  O  L  H  S  C  N  D  K  M  D  D  C  N   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

ORDER ALUIO

Facility: 201  ZZZ        COUNTRY
Wrong Trace:       Kotak: NA       PAT: NA        NOUN: AP

                  O  O  O  O  O  O  O  O  O  O  O  O  O  O
                  O  O  O  O  O  O  O  O  O  O  O  O  O  O   LAM
AMO ORDER #   P/P R  O  L  H  S  C  N  D  K  M  D  D  C  N   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
ORDER AL123  ...cont....

Se NOUN :XP com A/A & & K/K é encontrado, exclua este tipo de registro do arquivo

Por que a maioria dos scripts está falhando porque uma condição como essa (se NOUN: AP e A / A & K & K estão lá) também está exibindo esse registro ... ou condições como essas (se NOUN: XP com A / Z & K & Z) está exibindo esse registro também ... e eu preciso excluir esses registros e não mantê-los.

saída ---- >

ORDER ALPHA
Facility: 201  ZZZ        COUNTRY
Wrong Trace:       Kotak: NA       Soak: NA        NOUN: XP

                  O  O  O  O  O  O  O  O  O  O  O  O  O  O
                  O  O  O  O  O  O  O  O  O  O  O  O  O  O   LAM
AMO ORDER #   P/P R  O  L  H  S  C  N  D  K  M  D  D  C  N   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 

Observe que NOUN [small space is there]:XP , linhas e coluna são dinâmicas.

    
por chandu 02.03.2017 / 18:23

1 resposta

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

Dada a sua edição, tudo o que precisa mudar é o seguinte:

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