Как извлечь только определенные строки, совпадающие со строками из стандартного ввода из нескольких строк

У меня есть стандартный ввод по трубопроводу из другой выходной функции 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, поэтому любая помощь будет принята с благодарностью.

Всего 1 ответ


Никакой магии не требуется - сохраните значения в массиве, когда они видны на входе, и напечатайте их, когда вы нажмете --- строку:

$ awk -F'=' -v OFS=',' '/---/{print v["fruit"], v["car"]} {v[$1]=$2}' file
apple,bmw
orange,ford

Есть идеи?

10000