Как я могу получить / отфильтровать записи истории в определенном диапазоне?
У меня есть большой файл истории и я часто использую
history | grep somecommand
Теперь у меня плохая память, и я также хочу посмотреть, что еще я делал, когда вводил команду.
А пока я делаю это: получи совпадение, скажи 4992 somecommand
, тогда я сделаю
history | grep 49[0-9][0-9]
обычно это достаточно хорошо, но я бы предпочел сделать это более точно, то есть увидеть команды с 4972 по 5012, то есть 20 команд до и 20 после.
Мне интересно, есть ли более простой способ? Я подозреваю, что заказной сценарий в порядке, но, возможно, кто-то еще делал что-то подобное раньше.
Ответы:
Вы можете
grep
распечатать несколько строк, окружающих совпадение, например, 3 до и 5 после:grep -C 4
эквивалентноgrep -A 4 -B 4
.Но часто вы не будете точно знать, сколько строк вы хотите заранее. Поэтому используйте меньше и ищите внутри него. Вы даже можете запустить поиск из командной строки:
источник
less
! Не знал, что вы могли бы сделать этоПопробуйте fc:
... это встроенная команда bash. (так что не пытайтесь в tcsh:>)
источник
пытаться
history | grep -C20 '^4992'
источник