
Есть ли возможность получить вывод из 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}'