Привет друзья.Как с помощью sed можно удалить предпоследнюю строку из файла.
Пока только додумался до такого:
# sed -n -e '$!=' etc/group | tail -n 1
и по номеру строки уже удалять.
Можно как-то сделать проще?
>Привет друзья.
>
>Как с помощью sed можно удалить предпоследнюю строку из файла.
>Пока только додумался до такого:
># sed -n -e '$!=' etc/group | tail -n 1
>и по номеру строки уже удалять.
>Можно как-то сделать проще?Да в общем-то вы все правильно делаете, на мой взгляд. В данном случае, похоже, именно
по номеру строки придется ориентироваться. У меня вот такая конструкция получилась:sed -n "$(expr `sed -n '$=' /etc/group` - 1)d" /etc/group
>Можно как-то сделать проще?sed -n '1{x;b};${p;b};{x;p}' file
>
>>Можно как-то сделать проще?
>
>sed -n '1{x;b};${p;b};{x;p}' fileНу, супротив madskull'а я все равно что плотник супротив столяра. :-)
>>
>>>Можно как-то сделать проще?
>>
>>sed -n '1{x;b};${p;b};{x;p}' file
> Ну, супротив madskull'а я все равно что плотник супротив столяра. :-)allez, я извиняюсь, это на каком языке?
>>Можно как-то сделать проще?
>
>sed -n '1{x;b};${p;b};{x;p}' fileДа, это высший пилотаж ;)
А вас не затруднит расшифровать, что при этом делает sed?
>>>Можно как-то сделать проще?
>>
>>sed -n '1{x;b};${p;b};{x;p}' file
>
>Да, это высший пилотаж ;)
>А вас не затруднит расшифровать, что при этом делает sed?Логика примитивная, команды есть в мане...
Текущую строку запоминаем, предыдущую выводим. В случае последней строки, выводим ее, а предыдущую (она же предпоследняя), забываем.Кстати, если подумать, то можно даже вот так изобразить:
sed -n 'x;1b;$x;p' file
>[оверквотинг удален]
>>>
>>>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 можно удалить предпоследнюю строку из файла.
>Пока только додумался до такого:
># sed -n -e '$!=' etc/group | tail -n 1
>и по номеру строки уже удалять.
>Можно как-то сделать проще?sed '$d' file
>sed '$d' fileАноним, так вы удалите последнюю строку, а автору темы требуется удалить предпоследнюю.
Чувствуете разницу? ;-)
>>sed '$d' file
>
>Аноним, так вы удалите последнюю строку, а автору темы требуется удалить предпоследнюю.
>
>Чувствуете разницу? ;-)Сори :-) не правильно прочитал :-)
отставить '$d' :-)