如何在powershell中编写正则表达式以删除以|开头的任何字符串d | Ref.Doc。 ?
| D|Ref.Doc. |Row|DocumentNo|CoCd|Pstng Date|Period
| W|100003574 | 3|65697957 |CACS|01/15/2016| 1
| W|100003574 | 3|65697957 |CACS|01/15/2016| 2
| W|100003574 | 3|65697957 |CACS|01/15/2016| 3
| D|Ref.Doc. |Row|DocumentNo|CoCd|Pstng Date|Period
| W|100003575 | 3|65697957 |CACS|01/15/2016| 1
| W|100003575 | 3|65697957 |CACS|01/15/2016| 2
| W|100003575 | 3|65697957 |CACS|01/15/2016| 3
预期输出
| W|100003574 | 3|65697957 |CACS|01/15/2016| 1
| W|100003574 | 3|65697957 |CACS|01/15/2016| 2
| W|100003574 | 3|65697957 |CACS|01/15/2016| 3
| W|100003575 | 3|65697957 |CACS|01/15/2016| 1
| W|100003575 | 3|65697957 |CACS|01/15/2016| 2
| W|100003575 | 3|65697957 |CACS|01/15/2016| 3
答案 0 :(得分:1)
试试这个:
Get-Content $path | ? { $_ -notmatch '^\| D\|Ref\.Doc\.' }
请注意,|
和.
需要\
进行转义才能被解释为文字。
^
将正则表达式锚定在每个输入行的 start 。
但是,正如@PetSerAl在评论中建议的那样,在这种情况下,您可以使用更简单的通配符模式,而不是使用正则表达式:
Get-Content $path | ? { $_ -notlike '| D|Ref.Doc.*' }
请注意,?
是过滤Where-Object
cmdlet的别名。