Вы могли бы использовать питон. С помощью pythonpy это удобно делать однострочником вроде:
py "csv.DictReader(sys.stdin)" < x.csv
Но есть два нюанса.
- Вам нужно сохранить после фильтрации первую строчку (заголовок) csv-файла (например как вам в соседнем ответе предложили).
- На выходе у вас будут словари, которые очень похожи на josn.
Все эти нюансы можно легко обойти.
Во-первых, пропадает смысл использовать grep, раз вы и так юзаете питон. Можно фильтровать прямо им примерно так:
Во-вторых, после фильтрации можно вернуть первую строку обратно, как в соседнем ответе.
Второй нюанс фиксится не так элегантно, но вполне понятно:
py "(', '.join([f'{k}: {v}' for k, v in rec.items()]) for rec in csv.DictReader(sys.stdin))" < x.csv
Опять же, будьте осторожны с такими самодельными форматами. Нужно помнить о возможно йнеобходимости экранировать данные.