考虑文件dummy.txt,如下所示:
SomeMessage: "BLABLABLA Value 'V1' of attribute 'CLR', Additional Information: 'Sometext'." SomeMessage: "BLABLABLA Value 'W2' of attribute 'HGT', Additional Information: 'Sometextmore'." SomeMessage: "BLABLABLA Value 'X3' of attribute 'SND', Additional Information: 'EvenSomeBiggerBulk'."
如何从以", Additional Information"
开头直到行末的每行删除每个子字符串?这样我得到以下结果:
SomeMessage: "BLABLABLA Value 'V1' of attribute 'CLR' SomeMessage: "BLABLABLA Value 'W2' of attribute 'HGT' SomeMessage: "BLABLABLA Value 'X3' of attribute 'SND'
我试过了:
(Get-Content dummy.txt).Replace(', Additional*." ', '') | Set-Content temp.txt
但这使文件保持不变。
答案 0 :(得分:4)
你几乎是正确的
(Get-Content dummy.txt) -replace ", Additional.*" | Set-Content temp.txt
而不是.NET String方法.Replace()
,它使用PowerShell运算符-replace
。
.NET方法接受两个字符串oldValue
和newValue
,并且不使用正则表达式。它只能取代完全匹配。
PowerShell运算符也接受两个字符串,但它使用正则表达式。如果您只想删除匹配项,newValue
字符串是可选的。
答案 1 :(得分:2)
我会选择:
(Get-Content dummy.txt) -replace (",\sAdditional.*", "") > temp.txt
我更喜欢>
重定向器(管道也可以正常工作)。我改进了regex
以匹配您要搜索的内容。