gpt4 book ai didi

linux - 如果 2 个模式少于 n 行,sed 删除它们之间的内容

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

我找了好久还是没找到:

我有一个包含很多东西的文件+以下信息:

pool_1: &pool_prod
- ip: 10.1.60.5
weight: 1
- ip: 10.1.60.6
weight: 1

pool_prod_nl: &pool_prod_nl
- ip: 10.1.60.47
weight: 1

pool_prod_it: &pool_prod_it
- ip: 10.1.60.65
weight: 1
- ip: 10.1.60.83
weight: 1

pool_prod_it: &pool_prod_dek
- ip: 10.1.60.68
weight: 1

我想保留结果:

pool_1: &pool_prod
- ip: 10.1.60.5
weight: 1
- ip: 10.1.60.6
weight: 1

pool_prod_it: &pool_prod_it
- ip: 10.1.60.65
weight: 1
- ip: 10.1.60.83
weight: 1

当我做

sed -n '/pool_/,/^$/{p; /^$/q}'

我可以提取我在第一个代码中列出的一些信息,但我没有成功地对它们进行更多过滤,因为它们之间具有相同的模式和信息,只是行数或内部出现的次数会有所不同,但是我不知道怎么做。

我会很感激任何帮助提前致谢

最佳答案

awk 助您一臂之力!

$ awk -F'\n' -v RS= -v ORS='\n\n' '/pool/ && NF==5' file

pool_1: &pool_prod
- ip: 10.1.60.5
weight: 1
- ip: 10.1.60.6
weight: 1

pool_prod_it: &pool_prod_it
- ip: 10.1.60.65
weight: 1
- ip: 10.1.60.83
weight: 1

或将 NF==5 更改为 NF>4

关于linux - 如果 2 个模式少于 n 行,sed 删除它们之间的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40744968/

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