powershell - 使用PowerShell从文本文件中提取列

标签 powershell windows-server-2008

我必须从这篇文章中解释的文本文件中提取列:

Extracting columns from text file using Perl one-liner: similar to Unix cut

但是我也必须在未安装Perl的Windows Server 2008中执行此操作。如何使用PowerShell执行此操作?有什么想法或资源吗?我是PowerShell菜鸟...

最佳答案

试试这个:

Get-Content test.txt | Foreach {($_ -split '\s+',4)[0..2]}

如果您希望将这些列中的数据打印在同一行上:
Get-Content test.txt | Foreach {"$(($_ -split '\s+',4)[0..2])"}

请注意,这需要PowerShell 2.0 for -split运算符。另外,,4告诉split运算符您想要的最大分割字符串数,但是请记住,最后一个字符串将始终包含所有已连接的附加字符。

对于固定宽度的列,这是一种将列宽等于7($ w = 7)的方法:
$res = Get-Content test.txt | Foreach {
           $i=0;$w=7;$c=0; `
           while($i+$w -lt $_.length -and $c++ -lt 2) {
               $_.Substring($i,$w);$i=$i+$w-1}}

$ res将包含所有行的每一列。要设置最大列,请将$c++ -lt 2从2更改为其他内容。可能有一个更优雅的解决方案,但现在没有时间去思考。 :-)

关于powershell - 使用PowerShell从文本文件中提取列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2503010/

相关文章:

powershell - 迭代并搜索子项中的字符串

windows - WebResource.axd 使用 IIS7 在 ASP.Net Post 中给出 403 错误

64-bit - Windows Server 2008 不喜欢我的 exe (KernelBase.dll)

Windows 和 ABI 兼容性

c# - 用户 NT Authority\System 登录失败

batch-file - 在Windows Server中获取进程的pid

powershell - 使用批处理脚本删除csv文件的第一行和最后一行

.net - 在 .Net 代码中通过 Runspace 调整 PSModulePath

PowerShell 标准输出和重定向

powershell - 如何将Powershell项添加到阵列?