2015-09-29 4 views
1

Я не могу хвост последние п строки файла на Linux, также я могу Grep например grep "2015-09-29 04:" filename.ext Но как я могу объединить оба такие, что я отображение с определенным Grep к конец файла.Как совместить хвост и Grep в Linux

+0

файла 'кошки | K-й grep "2015-09-29 04:" | хвост "возможно? На данный момент у меня нет доступа к установке Linux для тестирования. –

+2

@ EricJ .: UUoC - бесполезное использование кошки? И он выбирает только строки, которые соответствуют. –

ответ

4

Вы не используете grep или tail. Вы можете использовать sed:

sed -n '/^2015-09-29 04:/,$p' 

Не печатать по умолчанию (-n). Начиная с первой строки, начиная с 2015-09-29 04: до конца файла ($), распечатайте линии.

Если вы абсолютно необходимо использовать grep и у вас есть GNU grep, то вы могли бы рассмотреть следующие вопросы:

grep -A 999999999 -e '^2015-09-29 04:' 

Это печатает первый миллиард или около строки после первой строки, которая соответствует шаблону (а счетчик если таковые рисунок появляется во время этого заднего материала). Конечно, если ваш файл имеет длину 2 миллиарда строк, а шаблон появляется после миллиона строк (и больше никогда), тогда вам не хватает большого количества данных.

+1

Плюс 1. Для полноты решения awk: 'awk '/^2015-09-29 04:/{f = 1} f'' – John1024

0
#!/bin/bash 
line_no=`grep -n -m1 "$1" $2 | cut -d: -f1` 
echo "Starting at line: " $line_no 
tail -n +$line_no $2 

Использование: сценарий 'текст для охоты на' файла
например

./grep.sh 'Sep 29 13:14' /var/log/syslog 
  • -n номера выпуск линии
  • -m1 остановка чтения после того, как 1 хит
  • cut из номера строки
  • tail -n +K выходных линий, начиная с