如何使用文件中的排除模式

问题描述 投票:3回答:2

我想使用awk在多个文件中搜索模式,但从文件中排除一些模式

这是我试过的代码

BEGIN { print "Begin Processing of various Records"}
/Type.*ABC/ {a=1} /999/{a=0; if (a==1) print a;}
END { print "Process Complete" }

例子:

这是文件示例

Resources:
  CODE:
    Type: "ABC::DEF::AVC"
    Type: "ABC::DEF::999"
    Type: "ABC::DEF::ZZZ"

现在假设我有文件排除内容

999
888
ZZZ

现在,我希望显示匹配第一个模式的所有行,但如果找到任何来自排除的模式则排除。

awk
2个回答
3
投票

这是你想要做的吗?

$ awk -F'[:"]' 'NR==FNR{a[$0];next} /Type.*ABC/ && !($(NF-1) in a)' excludes file
    Type: "ABC::DEF::AVC"

1
投票

如果您的数据在'd'文件中,请尝试gnu awk:

awk '/Type.*ABC/ && $0 !~ /999|888|ZZZ/' d
© www.soinside.com 2019 - 2024. All rights reserved.