опция "begin" вывода grep

опция "begin" вывода grep

Есть ли возможность получить вывод из grep, но этот вывод должен начинаться со слова, которое я ищу? Это действительно сложно объяснить, поэтому позвольте мне привести пример здесь:

Если вам нужно что-то найти в текущей конфигурации Cisco, я бы использовал следующую команду:

show running-configuration | b 10.0.1.202 — вывод начнется прямо с того места, где 10.0.1.202 был упомянут в первый раз.

Например, у меня есть очень длинный файл dhcp.leases на моем CentOS, но как мне выполнить grep | b 10.0.1.202 так, чтобы мой вывод начинался с того места, где 10.0.1.202 был найден впервые, а остальная часть вывода располагалась после него?

С уважением,

решение1

Grep для адреса, но показывает бесконечное количество строк контекста (используя -Aдля «строк после», аналогично для -B«строк до», -C«строк вокруг»):

cat dhcp.leases | grep -A9999999 '10\.0\.1\.202'

Хотя в вашем случае вывероятновам нужно всего 10-20 строк, а не все целиком, поэтому вам следует указать желаемое количество после -A.

Я обычно использую awk для обрезки определенных диапазонов (например, от регулярного выражения 1 до регулярного выражения 2):

cat dhcp.leases | awk '/10\.0\.1\.202/ {found=1} found {print}'
cat dhcp.leases | awk '/10\.0\.1\.202/{f=1}f'

cat somefile | awk '/^Begin:/{ok=1} ok{print} /^End:/{ok=0}'

Связанный контент