Удалить начальный контент из каждой строки файла - PullRequest
0 голосов
/ 13 июня 2019

Мне нужно удалить детали отметки времени из каждой строки, которая присутствует в начале.Как я могу достичь?

Я пытался использовать

regex = "[0-9]{1,2}/[0-9]{1,2}/[0-9]{1,4} [0-9]{1,2}:[0-9]{1,2}:[0-9]
{1,2}):[0-9]{1,3}"

, и мой подход был похож на

$Check = (Get-Content -Path .\file.txt|Select-Object -last 3|Out-String)         

$Check = $Check -replace('$regex','')

Строки в текстовом файле.txt будут выглядеть так:

[06/13/19 08:52:58] The new world 

[06/13/19 08:52:58] Computing 

[06/13/19 08:52:58] Technology

Ответы [ 2 ]

2 голосов
/ 13 июня 2019

и альтернативным методом будет использование строкового оператора -split и разбиение на ] [это закрывающая скобка и пробел]. как то так ...

('[06/13/19 08:52:58] The new world' -split '] ')[1].Trim()

вывод = The new world

1 голос
/ 13 июня 2019

если это статический штамп, просто используйте подстроку.

$start = Get-Content -Path C:\Windows\Panther\setupact.log -First 1
$start.Substring(11,8)

Это, например, только извлекает метку времени.

в вашем случае:

$start = "[06/13/19 08:52:58] Technology"
$start.Substring(20)

это удаляет его.

Надеюсь, это поможет! BR

Редактировать (см. Комментарий):

$content = Get-Content .\Desktop\test.txt

$newLine = ""
foreach($line in $content){
    if($line.IndexOf("[") -eq 0){
        $newLine += $line.Substring(20) + " "
        $prev = $true
    }
    else{
        if($line -ne ""){
            Write-Host $newLine
            $newLine = ""
        }

        write-host $line
        $prev = $false
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...