LINUX.ORG.RU

delete from to, по флагам

 


0

2

Доброго дня господа.
Подскажите, пожалуйста, как правильно sed'ом удалить из файлика, по-типу

1| row
2| row
3| 
4| #-begin-
5| somerow
6| somerow
7| #-end-
8|
9| row
всё что с строки 3 по строку 8 (включительно), опираясь на маркеры #-begin- и #-end- ?
Заранее спасибо адекватно ответившим

ЗЫ: обещаюсь ближайшее время раскурить sed и не задавать больше столь простых вопросов (хоть и нагуглить не смог; да и по ману, наскоком, осилить эту задачу).

Ответ на: комментарий от Spirit_of_Stallman
#!/bin/sh
BEGIN=`grep -n '#-begin-' "$1" | cut -f1 -d:`
END=`grep -n '#-end-' "$1" | cut -f1 -d:`
sed "${BEGIN},${END}d" -i "$1"

Сохраните скрипт и вызывайте так:

chmod +x script.sh
./script.sh "имя файла"

Здесь опущены проверки того, что в файле присутствуют ключевые слова, так что, если проверки вам нужны, то дописывайте их сами.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 2)
Ответ на: комментарий от Lavos

вот какого?

$ cat test.txt 
row 1
row 2
#-begin-
somerow 3
somerow 4
#-end-
row 5
$ sed '#-begin-/,/#-end-/d' < test.txt 
row 1
row 2
#-begin-
somerow 3
somerow 4
#-end-
row 5
Stil ★★★★★
()
Ответ на: комментарий от Lavos

благодарю

похоже пора создавать в толксах тред по улучшению внимательности >_<

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