Powershell, чтение из текстового файла и форматирование данных (удаление строк, удаление пробелов между ними) - PullRequest
4 голосов
/ 23 июня 2010

Я действительно очень плохо знаком с powershell. Я хочу использовать powershell для чтения текстового файла и изменения его в другой формат.

  1. Чтение из текстового файла.
  2. Форматирование данных (удаление строк, удаление пробелов между ними)
  3. Количество записей ("T 000000002" 9 знаков)

и затем записать вывод в новый файл.

Я только что запустил powershell два дня назад, поэтому пока не знаю, как это сделать.

Ответы [ 3 ]

8 голосов
/ 23 июня 2010
  1. Чтение из файла:

    Get-Content file.txt
    
  2. Не совсем уверен, что вы хотите здесь.Get-Content возвращает массив строк.Затем вы можете манипулировать тем, что вы получаете, и передавать его дальше.Наиболее полезные командлеты здесь, вероятно, Where-Object (для фильтрации) и ForEach-Object (для манипулирования).

    Например, для удаления всех пустых строк вы можете сделать

    Get-Content file.txt | Where-Object { $_ -ne '' } > file2.txt
    

    Thisможно сократить до

    Get-Content file.txt | Where-Object { $_ } > file2.txt
    

    , поскольку пустая строка в логическом контексте оценивается как false.

    Или удалить пробелы в каждой строке:

    Get-Content file.txt | ForEach-Object-Object { $_ -replace ' ' } > file2.txt
    
  3. Опять же, не совсем уверен, что вы здесь.Возможные вещи, которые я мог бы вспомнить из вашего слишком сложного описания, - это что-то вроде

    $_.Substring(2).Length
    

    или

    $_ -match '(\d+)' | Out-Null
    $Matches[1].Length
    
1 голос
/ 14 июня 2013

Мне тоже нравится?используется вместо объекта where, чтобы урезать его намного больше.

Get-Content file.txt | ?{ $_ } > file2.txt
1 голос
/ 09 июля 2010
function Count-Object() {
    begin {
        $count = 0
    }
    process {
        $count += 1
    }
    end {
        $count
    }
}

$a= get-content .\members.txt |  
Foreach-Object { ($_  -replace '\s','') } |
Foreach-Object { ($_ -replace '-','') } |
Foreach-Object { ($_ -replace 'OP_ID','') } | 
Foreach-Object { ($_ -replace 'EFF_DT','') } |
Where-Object { $_ -ne '' }|
set-content  .\newmembers.txt

 $b = Get-Content  .\newmembers.txt |
Count-Object $b 
 "T {0:D9}" -f $b | add-content  .\newmembers.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...