2015-01-01 2 views

ответ

5

Вам необходимо сбежать от [, иначе он начнет свою группу и сбежит до / в ваших данных.

sed -n '/^\[2015\/01\/01 03:46/,/^\[2015\/01\/01 03:47/p' Input.txt 

или (благодаря nu11p01n73R)

sed -n '\|^\[2015/01/01 03:46|,\|^\[2015/01/01 03:47|p' Input.txt 
+0

'[' запускает класс символов, а не группу. – tripleee

1

"[" это специальный символ в регулярных выражениях. Вы должны были бы избежать его и использовать его как:

sed -n '/^\[2015\/01\/01 03:46/,/^\[2015\/01\/01 03:47/p' Input.txt 
Output: 
[2015/01/01 03:46] INFO .... 
[2015/01/01 03:46] ERROR .... 
[2015/01/01 03:47] INFO .... 
+0

Теперь это похоже на мое решение :) – Jotne

+0

Да, проверено, избегая косых черт и введи без выхода из строя! – SMA

0

побег [ т.е. \[ и изменить разделитель СЕПГ в # или какой-либо символ, кроме / так это позволит избежать вам приходится бежать каждый /

sed -n '\#^\[2015/01/01 03:46#,\#^\[2015/01/01 03:47#p' 

Примечание: я избегаю первого октоторпа перед каждым шаблоном, чтобы sed мог интерпретировать его как разделитель.

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