如何在powerShell中打印regex匹配之前的行/行?



下面是自动生成的example.txt文件:

Application Name:       XYZSNWJ
Secret Key:             NDRkNDJcvWDFW
Application Name:       XYZSNWKkms
Secret Key:             DFSmnbaDFAsdc
Application Name:       HBDFJHXPI
Application Name:       XHjacvJHasxb 
使用regex,输出应该如下所示或任何其他命令:
Application Name:       XYZSNWJ
Secret Key:             NDRkNDJcvWDFW
Application Name:       XYZSNWKkms
Secret Key:             DFSmnbaDFAsdc

如何在powerShell中实现。
文件是自动生成的,所以在一个文件中可能有0到n个可用的时间块,像这样:

Application Name:       XYZSNWJ
Secret Key:             NDRkNDJcvWDFW
Application Name:       XYZSNWKkms
Secret Key:             DFSmnbaDFAsdc
Application Name:       HBDFJHXPI
Application Name:       XHjacvJHasxb 
Application Name:       XYZSNWJ
Secret Key:             NDRkNDJcvWDFW
Application Name:       XYZSNWKkms
Secret Key:             DFSmnbaDFAsdc
Application Name:       HBDFJHXPI
Application Name:       XHjacvJHasxb 
Application Name:       XYZSNWJ
Secret Key:             NDRkNDJcvWDFW
Application Name:       XYZSNWKkms
Secret Key:             DFSmnbaDFAsdc
Application Name:       HBDFJHXPI
Application Name:       XHjacvJHasxb 
Application Name:       XYZSNWJ
Secret Key:             NDRkNDJcvWDFW
Application Name:       XYZSNWKkms
Secret Key:             DFSmnbaDFAsdc
Application Name:       HBDFJHXPI
Application Name:       XHjacvJHasxb 
Application Name:       XYZSNWJ
Secret Key:             NDRkNDJcvWDFW
Application Name:       XYZSNWKkms
Secret Key:             DFSmnbaDFAsdc
Application Name:       HBDFJHXPI
Application Name:       XHjacvJHasxb 

那么它应该如何重复,直到文件结束。

下面使用-replace操作符从输入中删除以Application Name:开头的前两行开始的所有内容,这些行可能前面有制表符和/或空格。

@'
Application Name:       XYZSNWJ
Secret Key:             NDRkNDJcvWDFW
Application Name:       XYZSNWKkms
Secret Key:             DFSmnbaDFAsdc
Application Name:       HBDFJHXPI
Application Name:       XHjacvJHasxb 
'@ > example.txt
(Get-Content -Raw example.txt) -creplace
'r?n[ t]*Application Name:.+r?n[ t]*Application Name:[sS]+$'

最新更新