如果找到模式则删除记录集

如果找到模式则删除记录集

它可能是重复的,但不要标记这一点,伙计们,我正在执行一些手动任务无法得到精确的解到目前为止,已删除 45000 行中的 5000 行,尝试使其尽可能简单

订购阿尔法

设施: 201 ZZZ COUNTRY
错误跟踪: Kotak:NA 浸泡:NA NOUN: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 COUNTRY
错误跟踪: Kotak:NA 浸泡:NA NOUN: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 COUNTRY
错误的踪迹: Kotak:NA PAT:NA NOUN: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/A&&K/K则从文件中删除这些类型的记录

为什么大多数脚本都会失败,因为像这样的条件(如果 NOUN :AP 和 A/A && K/K 存在)它也显示该记录...或者像这样的条件(如果 NOUN :XP 带有 A/Z && K /Z)它也显示该记录...我需要删除这些记录而不是保留它们。

输出---->

订购阿尔法
设施: 201 ZZZ COUNTRY
错误跟踪: Kotak:NA 浸泡:NA NOUN: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
}

相关内容