如何使用批处理从长文本文件(可能超过7万行)中删除不包含某些文本的行

时间:2018-11-07 10:09:00

标签: batch-file text-files

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

我有这个文本文件:

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"

但是它以搜索字符串长退出

1 个答案:

答案 0 :(得分:0)

使用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行都不以!,*,开头)