首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用out-file时避免换行

使用out-file时避免换行
EN

Stack Overflow用户
提问于 2010-04-20 21:44:33
回答 2查看 18K关注 0票数 17

我对我正在编写的一个小PowerShell脚本感到有点沮丧。

基本上,我循环遍历文本文件,根据正则表达式模式数组检查每一行。结果通过管道传递到文件外cmdlet,后者将结果追加到另一个文本文件中。

代码语言:javascript
代码运行次数:0
运行
复制
Get-ChildItem $logdir -Recurse -Include @('*.txt') | Get-Content | ForEach-Object { 
Select-String $patterns -InputObject $_ | Out-File $csvpath -Append -Width 1000 }

我的问题是,我不能让文件外省略它在$csvpath后面的文件中创建的那些额外的换行符(每行后面三个)。我可以使用.NET框架类来实现相同的功能,但我更愿意使用纯PowerShell ;-)

任何帮助都是非常感谢的。

凯文

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-21 03:37:36

为什么不使用Add-Content

代码语言:javascript
代码运行次数:0
运行
复制
gci $logdir -rec *.txt | gc | select-string $pattern | add-content $csvpath

您不需要指定宽度和-append开关,默认情况下文件大小不是双倍的(尽管您可以指定编码),而且看起来像您这样的空行没有问题。

票数 11
EN

Stack Overflow用户

发布于 2010-04-20 23:22:12

请记住,Select-String输出的是MatchInfo对象,而不是字符串-如以下命令所示:

代码语言:javascript
代码运行次数:0
运行
复制
gci $logdir -r *.txt | gc | select-string $patterns | format-list *

在将MatchInfo对象输出到文件之前,您要求将其隐式呈现为字符串。出于某些我不明白的原因,这会导致输出额外的空行。您可以通过指定仅将Line属性输出到文件来修复此问题,例如:

代码语言:javascript
代码运行次数:0
运行
复制
gci $logdir -r *.txt | gc | select-string $patterns | %{$_.Line} | 
    Out-File $csvpath -append -width 1000
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2675552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档