如何使用批处理从长文本文件(可能超过70000行)中删除不包含特定文本的行



我有一个长文本文件(可能超过70000行(,我需要更改它——删除一些行,更改其他一些行。什么是正确的批处理命令?

我有这个文本文件:

blah
blah_blah, blah_other_blah
NUMLINES,     71369
VARIABLE_TYPES,T1,T10,S
!,NUMBER,OTHER
*,"1421915957",3
*,"1422222863",7
*,"1422239294",4
*,"1422382002",10
*,"1422485177",4
*,"1422496045",8
*,"1422500174",10
*,"1422500175",8
and so on
*,"1930482159",10
*,"1930482160",3
*,"1930482161",3
## some other blah lines
blah

我想要一个:

NUMBER;OTHER
1421915957;3
1422222863;7
1422239294;4
1422382002;10
1422485177;4
1422496045;8
1422500174;10
1422500175;8
and so on
1930482159;10
1930482160;3
1930482161;3

谢谢你的帮助。

到目前为止,我尝试用以下代码删除不需要的行:

findstr /v /b /c:"*," file1.txt > file2.txt
findstr /x /v /l /G:"file1.txt" "file2.txt" > "file3.txt"

但它退出时搜索字符串为长

使用findstr获取以!,*,开头的所有行。设置一个for /f循环来提取所需的信息,并将输出重定向到一个新文件:

(for /f "tokens=1,2,* delims=," %%a in ('type file.txt ^|findstr /b /c:"!," /c:"*,"') do @echo %%~b,%%c)>file2.txt

%%~b中的~将删除周围的引号。

(注意:这是批处理文件语法。如果您想直接在命令行上执行,请将每个%%替换为一个%(

(我希望,您的blah线路没有一条以!,*,开头(

最新更新