gpt4 book ai didi

regex - 使用 findstr 的正则表达式 (ms-dos)

转载 作者:行者123 更新时间:2023-12-05 06:46:57 34 4
gpt4 key购买 nike

我正在尝试使用 ms-dos 命令 findstr 查找字符串并将其从文件中删除。

目前我可以找到一个明确的字符串,但我真的很难使用正则表达式。该文件如下所示:

PLs - TULIP Report  
Output_Format, PLS - TULIP REPORT
NUMLINES, 110907
VARIABLE_TYPES,T1,T8,I,T9,T2,N,N,N
[[data below]]

该文件是从某个系统导出的,令人讨厌的是其中包含该 header - 所以我想在使用 SQL Loader 将其导入 Oracle 数据库之前清理它。

不仅仅是一个文件,所有文件都具有相同类型的 header ,但每个文件都略有不同。虽然我很高兴首先使用硬编码值删除前两行,例如:

findstr /v "PLs - TULIP Report" "c:\myfiles\file1.PRO"  > "c:\myfiles\file1.csv"</code><br>
findstr /v "Output_Format, PLS - TULIP REPORT" "c:\myfiles\file1.csv" > "c:\myfiles\file2.csv"

(请注意我是如何分两步完成的——如果有任何建议可以一步完成,我们将不胜感激)

第三行对我来说比较复杂,它总是采用那种格式:

NUMLINES,    110907

除了每个文件末尾的数字不同。那么如何使用正则表达式找到整行呢?我试过:

findstr /v /b /r "\D+ \s+ \d+"

但没有任何运气。

仅供引用,[[data below]] 中的数据看起来像

*,"00000161",456823,"017896532","FU",23.95,3.34,20.61

等..显然,我不想修改数据区。

我希望以上是有道理的,

谢谢

最佳答案

必须排除单行,findstr不能匹配多行。只需用空格分隔不同的正则表达式

findstr /r /b /v "NUMLINES PLs Output_Format" *.txt 
^regex1 ^2 ^3

指定 /b 允许您仅在行的开头查找匹配项,而 /v 则排除这些行。

编辑:

当然是用法了

 findstr /r /b /v "NUMLINES PLs Output_Format" yourfile > yourtarget

并且在 yourtarget 中,您将找到 yourfile 的数据,除了被正则表达式排除的行。

编辑 2:

根据您的评论,您只需将 VARIABLE_TYPES 添加到您的正则表达式即可

findstr /r /b /v "NUMLINES PLs Output_Format VARIABLE_TYPES" yourfile > yourtarget

这是在一条指令中完成整个操作的方法。

关于regex - 使用 findstr 的正则表达式 (ms-dos),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13028228/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com