Откусить первую строку файла

Модератор: Модераторы разделов

Аватара пользователя
LXj
Сообщения: 94

Откусить первую строку файла

Сообщение LXj »

Код: Выделить всё

  mv .wget-list .wget-list-tmp
  tac .wget-list-tmp | head -n-1 | tac >.wget-list
  rm .wget-list-tmp

Можно ли это сделать как-то более "красиво"? без временного файла хотя бы... (tac .wget-list | head -n-1 | tac >.wget-list то работает, то затирает файл)
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: Откусить первую строку файла

Сообщение Liksys »

Не знаю на счет временного файла, но можно конвейеры выкинуть:

Код: Выделить всё

mv file /tmp/file
head -n 1 /tmp/file > file
Спасибо сказали:
azat.h
Сообщения: 45

Re: Откусить первую строку файла

Сообщение azat.h »

Можно попробовать

Код: Выделить всё

sed -si 1d file.txt
Спасибо сказали:
Аватара пользователя
LXj
Сообщения: 94

Re: Откусить первую строку файла

Сообщение LXj »

azat.h, самое оно, спасибо!
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Откусить первую строку файла

Сообщение t.t »

(LXj @ Dec 18 2006, в 00:23) писал(а):то работает, то затирает файл
Вообще-то команды в конвейере выполняются одновременно. поэтому файл в таком случае открывается _одновременно_ на чтение и на запись. Естественно, ничего хорошего от этого ожидать не стОит. А стоит использовать альтернативные варианты: или временный файл, или что-ито вроде, к примеру, того же sed -i.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали: