if-statement - 如果下一行不包含文本,则删除行
问题描述
我有一个 json 文件并使用 jq 输出以下内容。
"network": "8.8.8.8/32",
"firewall",
"network": "8.8.8.7/32",
"network": "8.8.8.9/32",
"firewall",
"network": "8.8.8.10/24",
"network": "8.8.8.11/32",
"firewall",
我需要做的只是显示包含防火墙的网络。我想把它传给 sed 或 awk 来完成这个,但我运气不好。
所以基本上如果下面的行不包含防火墙,那么删除行。
预期产出
"network": "8.8.8.8/32",
"firewall",
"network": "8.8.8.9/32",
"firewall",
"network": "8.8.8.11/32",
"firewall",
我正在尝试但没有运气的一些东西
cat file.json | jq '.items[].networks[] | {data:[{network:.network,devices:[.configs[].locations[].devices[] | select(.id | contains("firewall")).id]}]} | awk '/network/ {while (/network/ && getline>0) ; next} 1'
我是否必须将其传输到文件中以使其更容易?
解决方案
避免getline()
,使用类似的东西
| awk '/network/ {n=$0} /firewall/ { printf("%s\n%s\n", n, $0)}'
推荐阅读
- node.js - 如何使用 mongoose refs 处理一对多关系
- python - 执行 Git 命令而不在仓库中并输出当前目录
- python - 在 Python 中从大型数据集绘图
- c# - 夏普序列化器使用自定义对象构造函数?
- google-app-engine - 将 Jira REST API 部署到 Googe Bigquery
- javascript - 直接 DOM 操作或访问
- java - Spring,Apache Avro,Allargs 构造函数
- java - 使用 Jedis 的 Redis 中单个键占用的内存?
- android - 离子 - 实时部署不适用于 Android <5.0
- javascript - 如何在没有刷新页面的情况下清空文之信引导表中点击事件的搜索框?