LINUX.ORG.RU

Я как-то так делал:

COUNTER_POS=`grep -n "DELETE ALL PREVIOUS" myfile.ext|grep -o "^[123456789]*"`
LINE_NUM=`wc -l myfile.ext|grep -o "^[1234567890]*"`
let LAST_LINE=$LINE_NUM-$COUNTER_POS
и tail тебе в помощь.

naszar
()
Ответ на: комментарий от windusjatnik

..угу, забавно. Глянул ман, вроде это только для GNU sed? Спасибо. Раньше думал, что sed только в строчки умеет, а оно вон как!

naszar
()
Ответ на: комментарий от naszar

Раньше думал, что sed только в строчки умеет, а оно вон как!

По сути это тоже редактирование строк. Т.е. все строки, с первой, по содержащую шаблон будут отредактированы методом удаления.

ziemin ★★
()

в котором нужно удалить все строки до строки DELETE ALL PREVIOUS. Какой командой такое можно сделать?

sed '1,/DELETE ALL PREVIOUS/d' -i*~ filename

Эта команда удаляет «на месте», сохраняя бекап filename~

Если бекап не нужен, то просто -i, без *~.

Глянул ман, вроде это только для GNU sed?

нет. Это для POSIX sed. Хотя в gnu-sed есть множество полезных расширений, но вам они в данном случае не нужны.

emulek
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.