我有一个标准输入,它是从另一个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字符串输入操作魔术只有基本的了解,因此不胜感激。
答案 0 :(得分:3)
不需要魔术-在输入中看到值时将其保存在数组中,并在按下---
行时将其打印出来:
$ awk -F'=' -v OFS=',' '/---/{print v["fruit"], v["car"]} {v[$1]=$2}' file
apple,bmw
orange,ford