atr*_*lla 11 powershell windows-server-2008
我必须从本文中解释的文本文件中提取列:
使用Perl one-liner从文本文件中提取列:类似于Unix cut
但我必须在没有安装Perl的Windows Server 2008中执行此操作.我怎么能用PowerShell做到这一点?任何想法或资源?我是PowerShell noob ......
Kei*_*ill 15
试试这个:
Get-Content test.txt | Foreach {($_ -split '\s+',4)[0..2]}
Run Code Online (Sandbox Code Playgroud)
如果您希望这些列中的数据打印在同一行:
Get-Content test.txt | Foreach {"$(($_ -split '\s+',4)[0..2])"}
Run Code Online (Sandbox Code Playgroud)
请注意,这需要PowerShell 2.0用于-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}}
Run Code Online (Sandbox Code Playgroud)
$ res将包含所有行的每列.要将最大列设置$c++ -lt 2从2 更改为其他值.可能有一个更优雅的解决方案,但现在没有时间去思考它.:-)
假设它的空白分隔,这段代码应该这样做.
$fileName = "someFilePath.txt"
$columnToGet = 2
$columns = gc $fileName |
%{ $_.Split(" ",[StringSplitOptions]"RemoveEmptyEntries")[$columnToGet] }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46014 次 |
| 最近记录: |