LINUX.ORG.RU

sed: удаление строк одним скриптом несколько раз

 ,


0

1

Доброй ночи. Использую для удаления строк из нижней части файла рабочий скрипт:

sed -e "1,/=== !delim! ===/!d" A.bak | sed -e "$d" > B.txt

Он оставляет текст с начала файла до строки-разделителя === !delim! === (не включая саму строку).

Подскажите, если я использую перечисление регулярных выражений в скрипте:

sed -e "1,/=== !delim! ===/!d;$d" A.bak > B.txt
то почему отрабатывает только первая часть regexp до ;, а $d не отрабатывает?

PS: Можно как-то упростить этот скрипт?



Последнее исправление: xseed (всего исправлений: 3)

!d;$d

тут ведь есть удаление (в виде !..), а после него - новый цикл ; можно либо в начало, либо завернуть в скобки:

sed -n '1,/=== !delim! ===/ {.... ; p}'
(и вроде по стандарту не обязан понимать '... ; ...' - заместо можно перевод строк)

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

«$d»

и такое - не очень, лучше уж прокинуть переменные awk-у (например), а то мало ли: echo test | sed 's/.*/xmessage ops/e'

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