我有以下代码:
$reader = [System.IO.File]::OpenText(".\Babytest.txt")
try {
for(;;)
{
$line = $reader.ReadLine()
if($line eq $null) {break}
if($line -notMatch 'BB1') { $line }
}
}
finally {
$reader.Close()
}
我理解这段代码的方式是:
$reader = [System.IO.File]::OpenText(".\Babytest.txt")
- 打开test.txt文件
for(;;)
{
$line = $reader.ReadLine()
if($line eq $null) {break}
if($line -notMatch 'BB1') { $line }
- 如果该行为空= EOF中断代码否则进入另一个IF查找其中没有'BB1'的所有行,输出$ line
我想做什么
首先,这段代码有效,虽然IF - notmatch似乎不起作用,但我仍然在输出到shell的内容中看到了带有BB1的行。我错过了什么?
如何将其写入文件?这是一种比管道更反对的东西,所以我不确定是否像
这样的东西|out-file "\\fhnsrv01\home\aborgetti\Documentation\Scripts\Baby Removal Project\babyoutput.txt"
会工作...非常感谢所有的帮助...我整天都在研究这个问题,但看起来PowerShell有一个学习曲线,我已经掌握了它,你可以做的很多...
更新
示例字符串:
AR|111000111011|500001|1|DavT|2013-09-10 12:03:18|2014-04-07 10:23:09|A25415|3|2013-08-11|2013-08-13|Y|01 |APPROVED|01 |APPROVED|35 |
没有BB1的字符串
AR|111100001BB1|500002|1||2014-04-02 15:30:12|2014-04-04 10:55:54|A32009|3|2014-03-31|2014-04-02|Y|01 |APPROVED|03 |PENDING|34 |
BB1字符串
我想删除像BB1 line
这样的行答案 0 :(得分:1)
使用for
循环和StreamReader
来读取文本文件,虽然不是错误的,但这不是在Powershell中执行操作的正确方法。除非你有某种关键性能要求(在这种情况下你不应该编写脚本),否则使用Powershell为你提供的高级工具要好得多。
Get-Content .\Babytest.txt |?{ $_ -notmatch 'BB1' } | Out-File 'BabyOutput.txt'
这应该做你想要的。
答案 1 :(得分:0)
我会这样做,但我知道什么:
while (($line = $reader.ReadLine()) -ne $null) {
if($line -notlike "*BB1*")
{
$line
}
}
答案 2 :(得分:0)
试试这个。它使用原生powershell命令,实际上会在大文件上超出您的流阅读器:
Get-Content .\Babytest.txt -ReadCount 1000 |
foreach {
$_ -notmatch 'BB1' |
Add-Content '\\fhnsrv01\home\aborgetti\Documentation\Scripts\Baby Removal Project\babyoutput.txt'
}
编辑:使用发布的测试数据 -
'AR|111000111011|500001|1|DavT|2013-09-10 12:03:18|2014-04-07 10:23:09|A25415|3|2013-08-11|2013-08-13|Y|01 |APPROVED|01 |APPROVED|35 |',
'AR|111100001BB1|500002|1||2014-04-02 15:30:12|2014-04-04 10:55:54|A32009|3|2014-03-31|2014-04-02|Y|01 |APPROVED|03 |PENDING|34 |'|
set-content ./babytest.txt
Get-Content .\Babytest.txt -ReadCount 1000 |
foreach {
$_ -notmatch 'BB1'
}
AR|111000111011|500001|1|DavT|2013-09-10 12:03:18|2014-04-07 10:23:09|A25415|3|2013-08-11|2013-08-13|Y|01 |APPROVED|01 |APPROVED|35 |