2013-04-24 2 views
0

Я пытаюсь отобразить вывод одной команды ОС последней строки файла журнала, который начинается с определенной строки.В Linux: распечатать последнюю строку файла журнала, которая начинается с

Так в основном у меня есть файл журнала, который гласит:

Tom 
Paul 
Tom 
Steve 
Anthony 
Tom 

Я хочу набрать команду, подобную этой:

tail -1 /etc/logfile | grep Steve 

и имеют выход так: Стив

К сожалению, вывод tail -1 показывает только последнюю строку файла журнала ... ЕСЛИ это соответствует. Я хочу, чтобы он искал файл журнала, снизу вверх (от самого последнего до самого старого) и печатал первую запись, которая соответствует «Начинается с» или grep. Спасибо. Я попробовал кучу комбинаций хвоста, седа, кота и меньше ... но я, возможно, просто делаю что-то маленькое неправильно и пропустил его.

ответ

2

Просто сделать это наоборот grep Steve /etc/logfile | tail -l

grep Steve /etc/logfile 

Возвращает все строки со Стивом затем

tail -1 

Печать последний из них.

+0

но как же я могу закрыть хвост? и как мне указать grep в файле журнала? Я попробовал grep Steve | tail -1/etc/logfile, и он только что вернул Тома и оставил хвост открытым. – user2317377

+0

Хвост закрывается после того, как grep завершает закрытие трубы. Я пропустил файл журнала в первый раз, проверьте мой исправленный ответ. – parkydr

+0

Итак, у меня возникла мысль, и, возможно, мне нужно задать совершенно новый вопрос, но могу ли я разработать сценарий оболочки для выполнения этой функции для набора списков шаблонов? Например ... Шаблоны = Стив, Том в скрипте. Затем скрипт будет проходить через каждый шаблон, grep шаблон из файла журнала, а затем хвост -1, чтобы отобразить последнюю запись для него. Таким образом, он будет отображать последнюю запись для каждого имени, которое я ищу, используя один скрипт. Я знаю, что это намного сложнее ... мне нужно задать новый вопрос? – user2317377

2

Если журнал достаточно мал, что вы не заботитесь, чтобы просмотреть его полностью, а затем

grep Steve etc/logfile | tail -n 1 

будет делать свою работу. Если файл действительно большой, вы не хотите его использовать, так как это повлияет на производительность, поэтому я предлагаю создать скрипт, который будет читать файл в обратном порядке и останавливаться в первом вхождении.