URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7056
[ Назад ]

Исходное сообщение
"sed, удалить предпоследнию стороку из файла."

Отправлено renton , 20-Дек-07 22:43 
Привет друзья.

Как с помощью sed можно удалить предпоследнюю строку из файла.
Пока только додумался до такого:
# sed -n -e '$!=' etc/group | tail -n 1
и по номеру строки уже удалять.
Можно как-то сделать проще?


Содержание

Сообщения в этом обсуждении
"sed, удалить предпоследнию стороку из файла."
Отправлено allez , 21-Дек-07 18:03 
>Привет друзья.
>
>Как с помощью sed можно удалить предпоследнюю строку из файла.
>Пока только додумался до такого:
># sed -n -e '$!=' etc/group | tail -n 1
>и по номеру строки уже удалять.
>Можно как-то сделать проще?

Да в общем-то вы все правильно делаете, на мой взгляд. В данном случае, похоже, именно
по номеру строки придется ориентироваться. У меня вот такая конструкция получилась:

sed -n "$(expr `sed -n '$=' /etc/group` - 1)d" /etc/group


"sed, удалить предпоследнию стороку из файла."
Отправлено madskull , 24-Дек-07 22:24 

>Можно как-то сделать проще?

sed -n '1{x;b};${p;b};{x;p}' file


"sed, удалить предпоследнию стороку из файла."
Отправлено allez , 25-Дек-07 05:40 
>
>>Можно как-то сделать проще?
>
>sed -n '1{x;b};${p;b};{x;p}' file

Ну, супротив madskull'а я все равно что плотник супротив столяра. :-)


"sed, удалить предпоследнию стороку из файла."
Отправлено Bogdan , 29-Дек-16 09:58 
>>
>>>Можно как-то сделать проще?
>>
>>sed -n '1{x;b};${p;b};{x;p}' file
> Ну, супротив madskull'а я все равно что плотник супротив столяра. :-)

allez, я извиняюсь, это на каком языке?


"sed, удалить предпоследнию стороку из файла."
Отправлено renton , 25-Дек-07 12:52 
>>Можно как-то сделать проще?
>
>sed -n '1{x;b};${p;b};{x;p}' file

Да, это высший пилотаж ;)
А вас не затруднит расшифровать, что при этом делает sed?


"sed, удалить предпоследнию стороку из файла."
Отправлено madskull , 25-Дек-07 14:49 
>>>Можно как-то сделать проще?
>>
>>sed -n '1{x;b};${p;b};{x;p}' file
>
>Да, это высший пилотаж ;)
>А вас не затруднит расшифровать, что при этом делает sed?

Логика примитивная, команды есть в мане...
Текущую строку запоминаем, предыдущую выводим. В случае последней строки, выводим ее, а предыдущую (она же предпоследняя), забываем.

Кстати, если подумать, то можно даже вот так изобразить:
sed -n 'x;1b;$x;p' file


"sed, удалить предпоследнию стороку из файла."
Отправлено krigstask , 03-Дек-11 21:25 
>[оверквотинг удален]
>>>
>>>sed -n '1{x;b};${p;b};{x;p}' file
>>
>>Да, это высший пилотаж ;)
>>А вас не затруднит расшифровать, что при этом делает sed?
> Логика примитивная, команды есть в мане...
> Текущую строку запоминаем, предыдущую выводим. В случае последней строки, выводим ее, а
> предыдущую (она же предпоследняя), забываем.
> Кстати, если подумать, то можно даже вот так изобразить:
> sed -n 'x;1b;$x;p' file

Не работает с -i: все строки (кроме предпоследней) дублируются в файле.

GNU sed 4.2.1


"sed, удалить предпоследнию стороку из файла."
Отправлено Аноним , 25-Дек-07 08:48 
>Привет друзья.
>
>Как с помощью sed можно удалить предпоследнюю строку из файла.
>Пока только додумался до такого:
># sed -n -e '$!=' etc/group | tail -n 1
>и по номеру строки уже удалять.
>Можно как-то сделать проще?

sed '$d' file


"sed, удалить предпоследнию стороку из файла."
Отправлено allez , 25-Дек-07 09:19 
>sed '$d' file

Аноним, так вы удалите последнюю строку, а автору темы требуется удалить предпоследнюю.
Чувствуете разницу? ;-)


"sed, удалить предпоследнию стороку из файла."
Отправлено Аноним , 25-Дек-07 15:09 
>>sed '$d' file
>
>Аноним, так вы удалите последнюю строку, а автору темы требуется удалить предпоследнюю.
>
>Чувствуете разницу? ;-)

Сори :-) не правильно прочитал :-)
отставить '$d' :-)