我的文本文件包含以下内容:
author : abc Revision : 123 Date : 9/4/2018 11.15.50 AM Path : testabc Message : Req ID:abcd1234 Rev:1.0.0 Status:something Notes:somethingabc Path : D:\temp
我希望此内容如下所示:
author : abc Revision : 123 Date : 9/4/2018 11.15.50 AM Path : testabc Req ID:abcd1234 Rev:1.0.0 Status:something Notes:somethingabc Path : D:\temp
我只需要删除“消息:”(在第5行中),并删除接下来三行的空格。
我在下面尝试过:
$content = Get-Content "D:\test.txt"
$content | Foreach {$_.TrimStart('Message : ')} | Foreach {$_.TrimStart()} | Set-Content "D:\test.txt"
答案 0 :(得分:2)
您可以像这样使用-replace
运算符
$lines = Get-Content "D:\test.txt"
$lines -replace "Message : " -replace "^\s+" | Set-Content "D:\test.txt"
注意:
-replace "A","B"
用A
替换B
。如果您省略B
,它会有效地删除A
(即不添加任何内容)。-replace
可以链接-replace
使用正则表达式,^\s+
表示“行首有多个空格” ForEach
-Get-Content
为您提供一行行,-replace
每行都运行一次。答案 1 :(得分:1)
IMO最简单的方法是基于RegEx的-Replace
运算符。
(Get-Content .\test.txt ) -replace "^(Message\s+:\s+|\s+)"
查看RegEx工作here with an explanation
RE锚定在行^
处,并且有alternate匹配
Message\s+:\s+
文字消息,后接冒号至少一个空格和至少一个空格
或|
以空格或更精确的方式将任何空白字符(等于[\r\n\t\f\v ]
)
并用,""
代替它们,这些<div @click="foo($event)" ></div>
foo(e){
console.log(e.ctrlKey) // If I press CMD and Click to DIV result always FALSE
console.log(e.shiftKey) // If I press SHIFT and Click to DIV result TRUE (shift working but cmd is not working)
}
不必表达但暗含。