【发布时间】:2014-05-21 19:01:01
【问题描述】:
我有以下代码:
$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 }
-- 如果该行为 null=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 线这样的线
【问题讨论】:
-
您需要使用
-eq而不是eq,如果您愿意的话,您可以使用while(1){}而不是for(;;).. 另外,对或删除婴儿 -
@Cole9350 哈哈,你是个傻瓜,谢谢broseidon。我可能无法将其输出到输出文件,我是否需要在第二个 IF 中处理输出?还是之后?
-
我仍然无法匹配其中包含 BB1 的行!
-
要么您没有向我们提供准确的信息,要么您的系统出现了非常奇怪的问题。根据以下所有答案,
-notmatch 'BB1'应该可以正常工作。文件的编码奇怪吗? -
好吧,我只有5行,其中3行在字符串中有BB1,应该返回2,但所有5都返回
标签: windows powershell line powershell-3.0