Попробуйте это:
Get-Content test.txt | Foreach {($_ -split '\s+',4)[0..2]}
И если вы хотите, чтобы данные в этих столбцах печатались в одной строке:
Get-Content test.txt | Foreach {"$(($_ -split '\s+',4)[0..2])"}
Обратите внимание, что для этого требуется PowerShell 2.0 для оператора -split
. Кроме того, ,4
сообщает оператору разделения максимальное количество строк, которое вы хотите, но имейте в виду, что последняя строка всегда будет содержать все дополнительные конкатеты.
Для столбцов фиксированной ширины, вот один подход для ширины столбца, равной 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 на другое значение. Возможно, есть более элегантное решение, но сейчас у него нет времени, чтобы обдумать его. : -)