搜索并替换
我有一个非常大的SQL转储大约400MB。搜索并替换
它的格式如下:“INSERT INTO user VALUES('USERID','USERNAME','PASSWORD','0','0','EMAIL','GENDER','BIRTHDAY','182 '','13','640','已婚','直','','是','是','1146411153','1216452123','1149440844','0',图片','1 ','0','0','zip','0','','0','','','0')“
是否有反正我可以只是得到电子邮件和密码输出,我想导入到另一个表的用户。
任何人都知道我可以做到这一点,只是从该内容中删除电子邮件密码?
预先感谢您
,因为你的问题被标记为 “perl” 的,一个部分解决方案:
perl -ne '@m = split /,/; print $m[5], $m[2], "\n";' <your400MB.sqldump
虽然有可能是逗号在字段虽然 – 2010-05-10 13:04:09
真棒,伟大的工程!非常感谢! – 2010-05-10 13:05:55
与I/O重定向(http:// en。 BTW Kinopiko是正确的,这是我在我的回答 – 2010-05-10 13:09:49
较短Perl的oneliner解决方案
perl -F, -anE 'say $F[5], $F[2];' file
由于Kinopiko说,运行拆分来解析CSV文件不是一个好主意(例如域内的逗号等)。你应该使用一个CSV解析器,这样的:
use strict;
use Text::CSV_XS;
my $csv_obj = Text::CSV_XS->new({allow_whitespace=>1, quote_char => "'"})
|| die "Error\n";
while (<>) {
$csv_obj->parse($_);
my @fields = $csv_obj->fields();
print "$fields[2],$fields[5]\n"
}
注:没有测试,因为我在一个环境现在是具有现代CSV_XS :(
+1中编写__partial__的一个原因,以便适当的模块解析CSV,正如你所提到的,一个问题是要有一世在环境中......否则,有时候暴力行为就会发生。 – 2010-05-11 08:33:03
进不去为什么SQL转储没有加载到数据库然后针对它发出查询,只选择电子邮件和密码??? – FMc 2010-05-10 13:15:41