Объедините grep с флагами и оператором pipe для фильтрации файла - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть файл (смартфоны), который содержит разные смартфоны:

Бренд: Apple Тип: iPhone 7 Цвет: серебристый Годы: 2

Бренд: Apple Тип: iPhone 7 Цвет: золото Годы: 3

Бренд: Apple Тип: iPhone 8 Цвет: серебристый Годы: 1

Бренд: Apple Тип: iPhone 7 Цвет: серебристый Годы: 1

Как мне найти, используя несколько ключевых слов, смартфон, который я ищу, если бы я хотел объединить grep с флагами и оператором pipe для фильтрации исследования?

Результат, который я ищу, должен выглядеть примерно так:

Бренд: Apple Тип: iPhone 7 Цвет: серебристый Годы: 1

Я пробовал разные способы, в том числе и флаг -e, но я получаю разные строки со всеми результатами, соответствующими моим ключевым словам, а не только один смартфон, который соответствует всем моим ключевым словам.

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Я получил решение. Мне пришлось использовать флаги, чтобы показать мне строки до и после моих ключевых слов:

grep Apple myfile -A2 | grep iPhone -C1 | 1-B2

Где A2 остается для - показать мне следующие две строки после моего ключевого слова, C1 остается для - показать мне строку до и строку после моего ключевого слова и -B2 остается для показа мне 2 строки перед моим ключевым словом.

0 голосов
/ 01 ноября 2018

cat <your_file_name_here> | grep 'Brand: Apple' | grep 'Type: iPhone 7'

Получит все Apple iPhone 7

Вы можете добавить | grep 'Color: Silver', чтобы получить все Silver iPhone 7.

Обратите внимание, что это предполагает, что всегда есть key: value - если может быть различное количество пробелов и т. Д., Тогда вам нужно сделать что-то более умное.

...