Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 从大文本文件批处理中提取所有字符串_Batch File_Cmd_Extract_Text Extraction - Fatal编程技术网

Batch file 从大文本文件批处理中提取所有字符串

Batch file 从大文本文件批处理中提取所有字符串,batch-file,cmd,extract,text-extraction,Batch File,Cmd,Extract,Text Extraction,我有34 GB的SQl转储文件 CREATE TABLE `table1` CREATE TABLE `table6` CREATE TABLE `table44fff` CREATE TABLE `tablecvd` 我需要快速提取所有表的名称,我想一定是这样的 FOR /F "tokens=* delims=" %%A IN ('db1.sql ^| FIND "CREATE TABLE `"') DO ECHO %%A > output.txt 但是我的文件太大了,所以出错了 我

我有34 GB的SQl转储文件

CREATE TABLE `table1`
CREATE TABLE `table6`
CREATE TABLE `table44fff`
CREATE TABLE `tablecvd`
我需要快速提取所有表的名称,我想一定是这样的

FOR /F "tokens=* delims=" %%A IN ('db1.sql ^| FIND "CREATE TABLE `"') DO ECHO %%A > output.txt
但是我的文件太大了,所以出错了

我需要在输出文件中获取表名列表

table1
table6
table44fff
tablecvd
....

我还没有在这么大的文件上尝试过,但是下面呢:

FOR /F "tokens=2 delims=`" %%A IN (
    'findstr "CREATE TABLE" db1.sql'
) DO (
    ECHO %%A >> output.txt
)
根据请求,在Perl中,这可以通过以下方式完成:

#!/usr/bin/perl
use v5.14;

open(IN, "<", "db1.sql");
open(OUT, ">>", "output.txt");

while (<IN>) {
    if(/^CREATE TABLE `(.*)`/){
        say OUT $1;
    } 
}

close(IN);
close(OUT);
#/usr/bin/perl
使用v5.14;
打开(在“>”和“output.txt”中);
而(){
如果(/^CREATE TABLE`(.*)`/){
说出1美元;
} 
}
关闭(IN);
收尾;

您需要使用与本地代码(例如,C++、爪哇、C语言)相近的语言进行流处理。批处理速度慢。是的,mihai_mandis是对的。即使像Perl这样的语言也能更快地解析这个大文件。