パターンが見つかったらレコードセットを削除する

パターンが見つかったらレコードセットを削除する

重複かもしれませんが、この人を報告しないでください。私は手動で作業しています。正確な解決策が得られないできるだけ簡単にするために、これまで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
}

関連情報