gpt4 book ai didi

regex - 使用AWK 在满足条件时提取数据?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:26:29 25 4
gpt4 key购买 nike

我有一个大文件,有一些规则的模式

   snaps1:          Counter:             4966
Opens: Counter: 357283
Instance: s.1.aps.userDatabase.mount275668.attributes

snaps1: Counter: 0
Opens: Counter: 357283
Instance: s.1.aps.userDatabase.test.attributes

这些行在上面和下面的其他行中重复。我需要打印 snaps1 行并获取实例:行所以我需要搜索 snaps1 但前提是计数器大于 0,然后打印 snaps1 行和实例行。

本站有人提供了答案

 awk '/snaps1/{s=$0; c=$NF} /Instance/ && c{print s ORS $0}' file

这行得通,但我不确定它是如何工作的。我还需要知道这是否消除了空格?如果我想比较文本而不是上面的零怎么办。因此,我将寻找 snap1 而不是寻找零,它只等于 ZZZ 并且我想打印包含实例的行作为上面提供的答案,当比较 snap1 > 零时。有人可以回复并请提供它如何工作的详细信息,以便我可以在其他地方使用它吗?

   snaps1:          Counter:             ZZZ
Opens: Counter: 357283
Instance: s.1.aps.userDatabase.test.attributes

snaps1: Counter: ABC
Opens: Counter: 357283
Instance: s.1.aps.userDatabase.test.attributes

所以从上面的行我应该看到这个输出

snaps1:          Counter:             ZZZ
Instance: s.1.aps.userDatabase.test.attributes

感谢您提供的任何帮助

最佳答案

你可以这样使用它:

awk '/snaps1/ && $NF=="ZZZ"{s=$0} /Instance/ && s{print s ORS $0; s=""}' file
snaps1: Counter: ZZZ
Instance: s.1.aps.userDatabase.test.attributes

awk 命令分解:

/snaps1/ && $NF=="ZZZ"  # if line has "snaps1" and last field is "ZZZ"
{s=$0} # store current line in variable s
/Instance/ && s # if line has "Instance" and variable s is not empty
{print s ORS $0; s=""} # print variable s ORS and current line. Reset variable s

关于regex - 使用AWK 在满足条件时提取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34052256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com