bit*_*ler 17 powershell line-breaks
我正在写一篇关于PowerShell脚本的小沮丧.
基本上我循环遍历文本文件以针对正则表达式模式数组检查每一行.结果通过管道传递到外部文件cmdlet,后者将其附加到另一个文本文件.
Get-ChildItem $logdir -Recurse -Include @('*.txt') | Get-Content | ForEach-Object {
Select-String $patterns -InputObject $_ | Out-File $csvpath -Append -Width 1000 }
Run Code Online (Sandbox Code Playgroud)
我的问题是我无法输出文件来省略它在$ csvpath后面的文件中创建的额外换行符(每行后三个).我可以使用.NET框架类来实现同样的目的,但我宁愿坚持使用纯PowerShell ;-)
任何帮助是极大的赞赏.
凯文
Kei*_*ill 14
请记住,Select-String输出MatchInfo对象而不是字符串 - 如此命令所示:
gci $logdir -r *.txt | gc | select-string $patterns | format-list *
Run Code Online (Sandbox Code Playgroud)
在输出到文件之前,您要求将MatchInfo对象隐式呈现为字符串.由于某些原因我不明白,这导致输出额外的空白行.您可以通过指定只想将Line属性输出到文件来解决此问题,例如:
gci $logdir -r *.txt | gc | select-string $patterns | %{$_.Line} |
Out-File $csvpath -append -width 1000
Run Code Online (Sandbox Code Playgroud)
ste*_*tej 10
你为什么不用Add-Content?
gci $logdir -rec *.txt | gc | select-string $pattern | add-content $csvpath
Run Code Online (Sandbox Code Playgroud)
您不需要指定宽度和-append开关,默认情况下文件大小不会加倍(尽管您可以指定编码),并且似乎空行没有问题.
| 归档时间: |
|
| 查看次数: |
16870 次 |
| 最近记录: |