微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在VIM中保存整个文件

我有一个非常大的CSV文件,超过2.5GB,导入到sql Server 2005时,在特定的行(82,449)上给出错误消息“ Column delimiter not found ”。

问题是在这个列的文本中加双引号,在这个例子中,这是一个有人写了“ Transferred money to ""MIKE"",Thnks ”的注释字段。

由于文件太大,我无法在Notepad ++中打开它,并进行更改,这使我find了VIM。

我对VIM非常82,449 G ,我回顾了一下教程文档,它教会了如何使用82,449 G来更改文件,以find该行, l到现场,双引号。

vim-foreplay在Ruby 1.9中非常慢,而在Windows上则是Ruby 1.8

伟大的工具来查找和replace文件

VIM问题:.swp文件存在时,是否可以添加“(D)elete”选项

如何使用cscope?

在Windows上使用VIM和Netrw进行快速search

当我使用:saveas c:Test VIMTest.csv保存文件时,它似乎是文件的一部分。 原始文件是2.6GB,新保存的是1.1GB。 原始文件有9,389,222行,新保存的有3,751,878行。 我试过使用G命令在保存之前到达文件底部,这增加了相当大的尺寸,但仍然没有保存整个文件; 在使用G之前,文件只有230 MB。

任何想法,为什么我不保存整个文件

名称切换到VIM窗口

在gVim for Windows中如何编写函数或macros来发送参数给系统调用

在Windows上,gVim中的可视化模式在Unix中不起作用

换挡locking键的作用就像换挡和换挡locking。 如何使它像使用xmodmap越狱?

我怎样才能完美地使用windows gvim下的cscope

您确实需要使用“流编辑器”,类似于Linux上的sed ,它可以让您通过管道传输文本,而无需将整个文件保存在内存中。 在sed我会做这样的事情:

sed 's/""MIKE""/"MIKE"/' < source_file_to_read > cleaned_file_to_write

一个Windows的sed 。

作为第二选择,您可以使用像Perl,Python或Ruby这样的编程语言,从文件逐行处理文本,在搜索双引号时编写文本,然后更改相关行,然后继续编写直到文件被完全处理。

如果您的机器有足够的可用RAM,VIM可能能够加载该文件,但这将是一个缓慢的过程。 如果是这样,您可以使用以下方式从直接模式搜索

:/""MIKE""/

并手动删除一个双引号,或让VIM自动使用以下内容进行更改:

:%s/""MIKE""/"MIKE"/g

在任何一种情况下,使用以下命令写入然后关闭文件

:wq

在VIM中,直接模式是编辑器的正常状态,您可以使用ESC键进入该模式。

您也可以将文件分割成更小的可管理的块,然后将其合并回去。 这里是一个bash中的脚本,可以将文件拆分成相等的部分:

#!/bin/bash fspec=the_big_file.csv num_files=10 # how many mini-files you want total_lines=$(cat ${fspec} | wc -l) ((lines_per_file = (total_lines+num_files-1) / num_files)) split --lines=${lines_per_file} ${fspec} part. echo "Total Lines = ${total_lines}" echo "Lines per file = ${lines_per_file}" wc -l part.*

我只用61151570行对1GB文件进行了测试,每个结果文件几乎为100 MB

编辑:

我刚刚意识到你在Windows上,所以上面可能不适用。 你可以使用一个像简单的文本分割器一样的工具来执行相同的操作。

当您可以打开文件,比如E342: Out of memory!错误时E342: Out of memory! ,你也应该可以保存完整的文件。 至少应该有一个错误:w ,部分保存没有错误是严重的数据丢失,应该报告为bug,无论是在vim_dev邮件列表或http://code.google.com/p / VIM /问题/名单

你正在使用哪个精确版本的Vim? 在Windows 7 / x64上使用GVIM 7.3.600(32位),我无法打开一个1.9 GB的文件而没有内存不足 。 我能够从这里成功地打开,编辑和保存(全部)一个3.9 GB的文件和64位版本7.3.000。 如果你还没有使用这个原生的64位版本,请试试看。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐