通过batch file删除txt文件中的某些行
我有一个生成的txt文件。 这个文件有一些多余的行,需要删除。 每行需要删除的行中有两个string中的一个; “错误”或“参考”。 这些令牌可能出现在该行的任何地方。 我想删除这些行,同时保留所有其他行。
所以,如果txt文件看起来像这样:
良好的数据线 坏道C:\ Directory \ ERROR \ myFile.dll 另一个好的数据线 坏的线:参考 好的路线
我想这个文件最终是这样的:
良好的数据线 另一个好的数据线 好的路线
TIA。
使用以下内容:
type file.txt | findstr /v ERROR | findstr /v REFERENCE
这具有在Windows操作系统中使用标准工具的优点,而不必find并安装sed / awk / perl等。
请参阅下面的成绩单在运作:
C:\>inputfile.txt 良好的数据线 坏道C:\ Directory \ ERROR \ myFile.dll 另一个好的数据线 坏的线:参考 好的路线 C:\>inputfile.txt | findstr / v ERROR | findstr / v REFERENCE 良好的数据线 另一个好的数据线 好的路线
您可以使用findstr本身来完成与@ paxdiablo相同的解决scheme。 没有必要一起input多个命令:
findstr /V "ERROR REFERENCE" infile.txt > outfile.txt
这是如何工作的细节:
- / v查找与searchstring不匹配的行(@paxdiablo使用相同的开关)
- 如果searchstring在引号中,则执行ORsearch,使用每个字(分隔符是空格)
- findstr可以接受一个input文件,你不需要使用“type”命令来input文本
- “> outfile.txt”将结果发送到文件outfile.txt,而不是将它们打印到您的控制台。 (请注意,如果文件存在,将会覆盖该文件。如果要附加,请使用“>> outfile.txt”)。
- 您也可以考虑添加/ i开关来执行不区分大小写的匹配。
如果你有sed:
sed -e'/ REFERENCE / d'-e'/ ERROR / d'[FILENAME]
其中FILENAME是带有好坏行的文本文件的名称
如果你已经安装了perl,那么perl -i -n -e"print unless m{(ERROR|REFERENCE)}"
应该可以做到这一点。