GREP несколько строк, которые не расположены рядом друг с другом

У меня есть текстовый файл, который выглядит примерно так:

landlord: John Smith
  has:
    house: 0
    flat: 5
  available: 1
  cheap: 0
  quality: 1
landlord: Will Hall
  has:
    house: 3
    flat: 4
  available: 1
  cheap: 1
  quality: 0
landlord: Marry Moe
  has:
    house: 0
    flat: 2
  available: 1
  cheap: 1
  quality: 0

Все, что меня интересует, это линии домовладельца и доступные . Как grep available: 1 строка от домовладельца ? Я имею в виду cat filename | grep -i 'домовладелец: Джон Смит' , а затем проверьте, доступен ли : 1 или 0 ?

1
задан 17 January 2021 в 22:54
2 ответа

Вы можете использовать эту команду для того же:

grep -A 4 -i 'John Smith' test.txt | grep -i available

1
ответ дан 24 April 2021 в 00:31

Вот один из способов сделать это:

egrep "(landlord|available)" filename | grep -A1 "John Smith"

UPD для проверки доступности:

egrep "(landlord|available)" filename | grep -A1 "John Smith" | grep -c "available: 1"
3
ответ дан 24 April 2021 в 00:31

Теги

Похожие вопросы