bash - 如何从多行标准输入中仅提取特定的字符串匹配行
问题描述
我有一个从示例表单中的另一个 bash 函数输出通过管道传输的标准输入:
fruit=apple
dog=doberman
car=bmw
flower=tulip
---
fruit=orange
dog=corgy
car=ford
flower=rose
---
……如此重复数千次……
从这个多次重复的管道标准输出中,我只想提取与水果和汽车匹配的值,如下所示:
apple
bmw
---
orange
ford
---
如果 sed/awk 魔法可以输出类似 csv 表格的格式,那就更好了,如下所示:
apple,bmw
orange,ford
我只有 bash 字符串输入操作魔术的基本知识,所以任何帮助将不胜感激。
解决方案
不需要魔法 - 当它们在输入中看到时将值保存在数组中,并在您点击---
一行时打印它们:
$ awk -F'=' -v OFS=',' '/---/{print v["fruit"], v["car"]} {v[$1]=$2}' file
apple,bmw
orange,ford
推荐阅读
- node.js - 当我必须存储cookie olve时如何解决导致nodejs ERR_CONNECTION_RESET的Chrome cookie
- android - NDK 安装在 Unity Hub 中,但 Unity 无法访问它
- c++ - 删除“this”指针后调用函数时出现运行时错误
- javascript - 等待来自不同文件 React 的 axios 的服务器响应
- r - 创建表示计数的新向量
- javascript - 为什么每次刷新logo我的页面都会自动上去?
- laravel - Laravel 在特定文件夹中创建迁移文件
- c++ - 使用零计数调用“memcpy”会很昂贵吗?
- ruby-on-rails - 一对多关系:找不到“id”=3 的 Ofertum
- spring - Spring JPA 如何使用两个不同的数据库连接进行读写操作?