2015-03-27 3 views
0

У меня есть файл журнала:Извлеките файл до и после указанной даты в Баш

2015-03-22^/home/dave-pc/tas 
2015-03-23^/home/dave-pc/tas/ss 
2015-03-15^/home/dave-pc/tas 
2015-03-22^/home/dave-pc/tas/ss 
2015-03-25^/home/dave-pc/tas 
2015-04-25^/home/dave-pc/tas/ss/aa 
2015-03-25^/home/dave-pc/tas/aa 
2015-01-10^/home/dave-pc/tas/cc 

и мне нужно найти строку до и после указанной даты. Я стараюсь, но есть проблема, когда я не имею дату в логе-файле ...

sort log.txt | grep -wns 2015-03-23 -A $(wc -l <log.txt) 
+0

Показать текст в вашем файле журнала проблем. 'когда у меня нет даты в файле журнала ...' – Kent

+0

например date 2015-03-27: sort log.txt | grep -wns 2015-03-27 -A $ (wc -l adamc9988

+0

@ adamc9988 Напишите его в вопросе с форматированием –

ответ

0

Попробуйте сравнение выходного сигнала из этих острот против данных выборки вы публикуемые:

pattern="2015-03-27"; if ! sort log.txt | grep -nw "$pattern" -A1 -B1; then echo "$pattern" | sort log.txt - | grep "$pattern" -A1 -B1 ; fi

pattern="2015-03-23"; if ! sort log.txt | grep -nw "$pattern" -A1 -B1; then echo "$pattern" | sort log.txt - | grep "$pattern" -A1 -B1 ; fi

Пояснение: Если шаблон не найден в отсортированном файле, шаблон «вставлен» в отсортированном файл (а не файл на диске, но файл в трубе), а затем г снова вернулась.

+0

ты меня не понимаешь. ДА на 2015-03-23 ​​он отлично работает, но попробуйте его, например, 2015-03-27 он не работает (потому что эта дата не находится в файле журнала), но после этой даты есть запись 2015-04-25 ^/home/Дейв-рс/тАС/сс/аа. Итак, как исправить это, пожалуйста, – adamc9988

+0

Я отредактировал ответ, как только я лучше понял вашу проблему. –

Смежные вопросы