Я пытаюсь создать сценарий bash, который будет искать строки из файла с помощью egrep. Я создал регулярное выражение, которое должно группировать нужную мне информацию, проблема заключается в попытке получить результат. Я тестировал его с помощью следующей команды, но при запуске ничего не печатается. Как напечатать несколько строк между - {80} и "Отключено"?
egrep -E "^-{80}$\r?\n?([:ascii:]*)Disconnected from Server" testing.txt
Файл: testing.txt
Connected to the server: name here
Some header text.
More text to go though...
--------------------------------------------------------------------------------
The information that I want, would be in here;
Including this line as well #$
and this one.
Disconnected from Server...
Возможно, вам лучше использовать такой инструмент, как awk.
awk '/^----+$/ {flag=1;next} /Disconnected from Server/{flag=0} flag {print}'
Видеть: http://nixtip.wordpress.com/2010/10/12/print-lines-between-two-patterns-the-awk-way/
Просто потому, что я в конце концов решил это, вот версия sed
sed -n '/^-----\+$/,/^Disonnected/ {/^----\+$/d;/^Disonnected/d;p;}' testing.txt
Это работает на всех строках между / RE1 / и / RE2 /, если ввод соответствует / RE1 / или / RE2 /, то он удаляется, в противном случае он печатается.