我喜欢这个对我有帮助的网站。这是我的第一个问题,因为我可以在这里很容易找到答案。这可能是一些搜索词的问题,这些搜索词有些含糊不清,或者我可能不知道要搜索的正确术语。无论如何,这是睡觉时间,明天我有工作,所以我想我会问专家。
所以:我已经能够通过Excel完成相当多的数据组织,格式化和分析,但最后一个问题是:Excel在一些列之后留下了11个标签(由于其后的11列)导出到文本文件(文本,以便主机程序可以导入它)。所以我在这里了解了 PowerShell 。
我很高兴能够在今天早些时候使用以下代码:
gc s3_data.txt | % {$_ -replace
“`t`t`t`t`t`t`t`t`t`t`t”, “ “} | set-content S3_copy2.txt
问题是我想要循环浏览文件夹中的所有文件。我现在可以让它做到这一点,并输出到单个文件,但无法通过相同的原始文件进行写入。实际上,这个版本一遍又一遍地输出到外部文件!
Get-ChildItem “C:\stuff\*.txt” | ForEach-Object{gc $_} `
| % {$_ -replace “`t`t`t`t`t`t`t`t`t`t`t”, “ “}`
|out-file notthefileIwanttosaveto.txt
以下是我尝试过的代码的一个版本:
Get-ChildItem “C:\stuff\*.txt” | ForEach-Object{gc $_} `
{$SaveFile= $_.Path}| % {$_ -replace “`t`t`t`t`t`t`t`t`t`t`t”, “ “}`
|out-file -filepath $savefile
显然,这个策略和其他几个策略不起作用,可能没有意义,但希望你能看到我想要做的事情。换句话说 - 如何使输出文件与它正在读取的文件相同?
答案 0 :(得分:1)
你可以使用像这样的管道
Get-ChildItem "C:\stuff\*.txt" |
% { (Get-Content $_) -replace "`t`t`t`t`t`t`t`t`t`t`t", "" | Set-Content $_ }
正如mklement0所指出的,您可能希望在写回处理数据时指定编码。对于UTF8,它可能看起来像这样
Get-ChildItem "C:\stuff\*.txt" |
% { (Get-Content $_) -replace "`t`t`t`t`t`t`t`t`t`t`t", "" | Set-Content -Encoding UTF8 $_ }