0
我有约5.5GB大小的文件。我想查看文件的特定行。让我们说行号100001,我想用我自己的文本替换该行。如何使用Unix命令来实现这个操作。我无法在编辑器中查看该文件。我无法打开,那是一台远程机器。UNIX替换文件中的特定行
任何人都可以分享一些想法,查看该行,并用其他文本替换它?
谢谢:)
我有约5.5GB大小的文件。我想查看文件的特定行。让我们说行号100001,我想用我自己的文本替换该行。如何使用Unix命令来实现这个操作。我无法在编辑器中查看该文件。我无法打开,那是一台远程机器。UNIX替换文件中的特定行
任何人都可以分享一些想法,查看该行,并用其他文本替换它?
谢谢:)
如果要修改就地行和替换数据被替换的相同长度的文本,你可以使用dd
到(小心!)覆盖该文件的一部分。
# getting the byte offsets of the start and length of the line
perl -ne '$s+=length; if ($.==100001) {print "$s + ",length,"\n"; exit}' bigfile
# writing over the existing data
echo 'new line' | dd of=bigfile bs=1 seek=$start count=$length conv=notrunc
如果替换数据是不同的长度,并且它不在文件的最后,则别无选择,只能重写该文件。这需要有足够的磁盘空间来保留bigfile
及其副本!
# The old file is renamed to bigfile.bak; a new bigfile is written with changes.
sed -i.bak -e '100001 c \
new line' bigfile
如果它不能被打开,你就没有希望,除非我误解了你的问题。 – Actorclavilis 2010-12-02 01:58:49