gpt4 book ai didi

linux - awk sep 数据提取特定变量后的行

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:27:40 29 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 行并获取 instance: 行所以我需要搜索 snaps1 但前提是计数器大于 0,然后打印 snaps1 行和实例行。

抱歉不知道该怎么做?你能帮我吗?

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

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

感谢您提供的任何帮助

最佳答案

试试这个:

awk '/snaps1/ && $NF>0{print;f=1}f&&/Instance/{print;f=0}' file

为了避免在行的开头出现空白:

awk '/snaps1/ && $NF>0{gsub(/^ */,"");print;f=1}
f&&/Instance/ {gsub(/^ */,"");print;f=0}' file

结果

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

解释

/snaps1/&& $NF>0 {gsub(/^ */,"");print;f=1} 用于设置f flagsnaps1 模式被找到时并且 最后一个字段 NF 必须大于 1 也删除不需要的空格并打印当前行.

注意 /snaps1/&& $NF 是一个等价的表达式,原因:任何除零以外的数值都是 用于 awk

f&&/Instance/{gsub(/^ */,"");print;f=0} 如果 f 标志为 True (1) and 找到 Instance 模式,打印当前行(删除不需要的空格)并将标志设置回 false。

关于linux - awk sep 数据提取特定变量后的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33878366/

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