LINUX.ORG.RU

tcl: удалить строку из файла, без перезаписи всего файла

 


0

2

Есть файл вида:

1111111111 2222222222
3333333333 4444444444
nnnnnnnnnn nnnnnnnnnn
Как при написании скрипта на tcl удалить первую строку без перезаписи всего файла? Если на tcl не реализуемо, то подойдут однострочники на sed/awk

Видится все таки что sed будет лучше, но не понятно, что значит «без перезаписи всего файла»...

Suntechnic ★★★★★ ()

В общем случае это ни на чем нереализуемо

buddhist ★★★★★ ()

Без перезаписи всего файла не получится, так как место для файла выделяется блоками и начало файла должно быть выравнено по началу блока, а строка скорее всего имеет длину не кратную размеру блока файловой системы. А если бы всё-таки имела, то тебе бы понадобилось ковырять файловую систему на физическом уровне, то есть права рута и что-то вроде debugfs.

Хотя может и можно на каких-то файловых системах иметь блок, не заполненный до конца не в конце файла — тогда можно перезаписать только первый блок (но полностью), сместив данные файла ближе к его началу и подредактировать записи файловой системы. Полагаю, тут понадобится C-api и чистым Tcl и тем более sed/awk не обойтись.

Xenius ★★★★★ ()

С чем связано требование про отсутствие перезаписи файла?

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