Как выбрать подмножество строк из истории в Bash? - PullRequest
2 голосов
/ 22 августа 2009

Довольно часто я grep просматриваю историю своей оболочки bash, чтобы найти старые команды, пути к файлам и т. Д. Определив интересующий номер истории, я бы хотел увидеть несколько строк контекста с обеих сторон, т.е. просмотреть подмножество линии истории. Например:

$ history | grep ifconfig

8408  ifconfig eth0
8572  sudo ifconfig eth0 down

Я хотел бы взглянуть на 5 строк или около того по обе стороны от строки 8572. Очевидно, зная номер строки, я могу пролистать историю с помощью less, но это кажется очень глупым. Насколько я могу судить, справочная страница, похоже, тоже не содержит этой информации.

Есть ли простой способ извлечь произвольные строки истории в bash?

Ответы [ 6 ]

5 голосов
/ 22 августа 2009

Параметр -C grep предоставляет контекст. Попробуйте:

$ history | grep -C 5 ifconfig
4 голосов
/ 22 августа 2009
history | grep -C 5 ifconfig
3 голосов
/ 22 августа 2009

Если вы хотите видеть его только для определенных номеров строк, вы также можете использовать что-то вроде этого

history | head -n 120 | tail -n 5

В этом примере печатаются строки от 116 до 120.

2 голосов
/ 22 августа 2009
history | grep ifconfig -A5 -B5

A = количество строк после совпадения, найденного grep B = количество строк перед совпадением, найденным grep Вы также можете изменить количество строк от 5 до любого нужного вам числа.

1 голос
/ 22 августа 2009

Я печатаю
history | grep " 840"

1 голос
/ 22 августа 2009

введите ctrl-r, затем несколько символов (интерактивный поиск). Подробнее информация здесь .

...