grep -A5 -E 'L337' -E 'Blue' -E 'Honda' -E 'Height: 6' ./vehicles
Используя этот код bash, я отфильтровал сотни результатов до 13, как показано ниже:
License Plate L337ZR9
Make: Honda
Color: Red
Owner: Katie Park
Height: 6'2"
Weight: 189 lbs
Я пытаюсь отфильтровать сначала по пластине, а затем удалить любой не синий, а не хонда, и любой короче 6 '. Мой синтаксис неверен, и я могу только вернуть это или любую отдельную строку, соответствующую любому из условий поиска.
Использование -v имеет две проблемы: во-первых, непрактично фильтровать по каждому минусу, когда у меня есть точные позитивы для поиска, а во-вторых,
grep -v 'Height: 5'
просто удаляет линию высоты, оставляя записи как несовместимые, так и неполные.
Как я могу отфильтровать результаты с помощью grep, сохранив все 6 строк? Можно ли указать построчный фильтр?
-
Edit: файл выглядит так, только я уже grep-ed для 'L337' на пластине. Проблема в том, что у меня проблемы с обработкой 6 отдельных строк данных как одной 6-строчной записи.
-A5 позволяет мне вернуть 5 строк под номерным знаком, но я не знаю, как найти «синий», не вырезая номерной знак и не убирая сверху.
License Plate L337DV9
Make: Honda
Color: Blue
Owner: Joe Germuska
Height: 6'2"
Weight: 164 lbs
--
License Plate L3375A9
Make: Honda
Color: Blue
Owner: Jeremy Bowers
Height: 6'1"
Weight: 204 lbs
--
License Plate L337WR9
Make: Honda
Color: Blue
Owner: Jacqui Maher
Height: 6'2"
Weight: 130 lbs