LINUX.ORG.RU
Ответ на: комментарий от anonymous

Хм... Видимо непонятно выразился... Отрезать и выкинуть... Удалить... BTW head без перенаправления не выйдет...

Svoloch ★★★
() автор топика

> Желательно без перенаправлений а то размер файла неинтересный....

Первое, что приходит в голову с использованием направлений - cat file |tail -$[`cat file |wc -l` - N] > file (bash specific вариант).

Если без перенаправлений, то, ИМХО, есть два варианта - a) Поменять shell на что-нибудь другое b) Написать для этих целей маленькую программульку на С и вызывает её из скрипта

Novel ★★★★
()

cat foo | sed 'n,$p' >foo

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

Obidos (*) (07.10.2004 16:06:46):

> А выкинуть начало файла без копирования хвоста в новый файл всё равно не получится.

На Це легко извратиться, используя прямой доступ к файлу:

скипаем до требуемого;

определяем размер скипнутого блока;

переносим остаток блоками в начало файла;

обрезаем остаток.

Die-Hard ★★★★★
()

есть один метод но только это скорее времянка чем решение.

losetup -o `head -n 5 myfile.dat | wc -c` /dev/loop0 myfile.dat

теперь loop0 это тот файл со смещением в 5 строк

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

+ может быть и лишний, это сугубо моя привычка. а -i нет. без -i вывод будет на stdout и придется использовать перенаправление, что противоречит начальным условиям

ananas ★★★★★
()
Ответ на: комментарий от Die-Hard

Да, но всё равно получается копирование. Я имел в виду то, что нельзя сделать так же легко, как отрезать _конец_ (чик и готово).

Obidos ★★★★★
()
Ответ на: комментарий от Svoloch

Если данные в текстовом виде, то без перенаправления никак. Если данных много и необходимо быстрое удаление, подумай о хранении их в базе.

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