![如何就地编辑大文件?](https://linux22.com/image/340/%E5%A6%82%E4%BD%95%E5%B0%B1%E5%9C%B0%E7%BC%96%E8%BE%91%E5%A4%A7%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我有几个文件,每个文件大小 > 1 GB。我需要从文件中删除最后几个字节。我该怎么做?我更喜欢就地编辑文件以节省磁盘空间。
我使用的是 HP-UX。
答案1
从文件末尾剪切 2 KB:
truncate -s-2K file
答案2
尝试使用十六进制编辑我还没有在 HP-UX 上尝试过,但它应该可以工作。它允许您移动到文件中的某个位置并截断。我很确定它不会读取整个文件,而只是寻找适当的位置进行显示。
一旦启动它,使用方法就相当简单,箭头键可以让您四处移动。 F1提供帮助。 Ctrl-G 移动到文件中的某个位置(提示:要移动到末尾,请使用显示屏底行中的文件大小)。将光标定位在要截断的第一个字节上,然后在确认截断已完成后按 Escape T。 Ctrl-x 退出。
答案3
使用可以访问系统调用的工具truncate
。您只需使用 POSIX 工具即可完成此操作。警告,在浏览器中输入;要特别小心,因为dd
它比通常的 UNIX 命令更难以容忍错误。 123456 是要保留的字节数。
dd if=/dev/null of=/file/to/truncate seek=1 bs=123456
Perl 版本更具可读性:
perl -e 'truncate "$ARGV[0]", 123456 or die $!' /file/to/truncate
答案4
您可以使用split
或ed
或awk
任何编程语言。