【发布时间】:2015-10-12 03:33:18
【问题描述】:
我有一个以竖线分隔的文本文件。该文件包含各种类型的“记录”。我想为每种记录类型修改某些列。为简单起见,假设有 3 种记录类型:A、B 和 C。A 有 3 列,B 有 4 列,C 有 5 列。例如,我们有:
A|stuff|more_stuff
B|123|other|x
C|something|456|stuff|more_stuff
B|78903|stuff|x
A|1|more_stuff
我想将前缀“P”附加到所有需要的列。对于 A,所需的列是 2。对于 B,所需的列是 3。对于 C,所需的列是 4。
所以,我希望输出看起来像:
A|Pstuff|more_stuff
B|123|Pother|x
C|something|456|Pstuff|more_stuff
B|78903|Pstuff|x
A|P1|more_stuff
我需要在 PowerShell 中执行此操作。该文件可能非常大。所以,我正在考虑使用.NET 的文件类。如果它是一个简单的字符串替换,我会做这样的事情:
$content = [System.IO.File]::ReadAllText("H:\test_modify_contents.txt").Replace("replace_text","something_else")
[System.IO.File]::WriteAllText("H:\output_file.txt", $content)
但是,在我的特殊情况下并不是那么简单。所以,我什至不确定 ReadAllText 和 WriteAllText 是否是最好的解决方案。关于如何做到这一点的任何想法?
【问题讨论】:
标签: powershell