我有一个包含信息行的csv文件。一行将告诉我它的作用,而下一行将告诉我它的作用。如果它什么也没做,它将不会有下一行。我想过滤掉没有做任何事情的行。因此,如果缺少下一行,则留在那里,如果有,请将其删除。这是CSV外观的示例。
事件 收件人的处置:1 邮件的处置:1 收件人的处置:2 收件人的处置:3 邮件的处置:3 收件人的处置:4 收件人的处置:5 邮件的处置:5 收件人的处置:6 邮件的处置:6
我只想过滤一下Recipient Disposition: 2
,Recipient Disposition: 4
然后删除其他人。
在PowerShell中有任何想法吗?
您的例子正确吗?从解释中不应该保留1、3、5和6吗?
无论哪种方式,您都可以使用的一种方法是使用Select-String
和正则表达式从文件中选择所需的行。通过添加Context
选项,您还可以选择下一行。Where-Object
用某种逻辑将其传递到对象中,以过滤掉不需要的对象。像这样的东西:
Select-String .\your_file.txt -Pattern '^Recipient' -Context 0, 1 | ? {
($_.Context.PostContext -split ':\s*')[1] -eq ($_.Line -split ':\s*')[1]
} | Select line
这将产生以下输出:
Line
----
Recipient Disposition: 1
Recipient Disposition: 3
Recipient Disposition: 5
Recipient Disposition: 6
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句