2016-11-29 3 views
1

Im пытается фильтровать мой файл в PowerShell, поэтому он содержит только строки со значением. Есть ли способ определить, есть ли значение за тегом [CAR]?Линии фильтра в файле .txt со значением в PowerShell

Или мне нужно написать что-то вроде этого?

$file = Get-Content C:\file.txt 
foreach ($line in $file){ 
    if ($line.Length -gt 47){ 
     #somehow safe those lines in another file 
    } 
} 

Пример сырья файла:

25 13:58:09.680 (0410041011) >>> DIAG[CAR] 
25 13:58:09.788 (0410041120) <<< [NAK]#99[CAR]0998034398[CAR]0998028069[CAR] 
25 13:58:29.789 (0410061120) >>> DIAG[CAR] 
25 13:58:29.896 (0410061227) <<< [NAK]#99[CAR]0998023613[CAR] 
25 13:58:49.897 (0410081228) >>> DIAG[CAR] 
25 13:58:49.981 (0410081311) <<< [NAK]#99[CAR]0998007552[CAR]0998019114[CAR]0998007115[CAR] 
25 13:59:09.982 (0410101312) >>> DIAG[CAR] 
25 13:59:10.069 (0410101399) <<< [NAK]#99[CAR]0998024143[CAR] 
25 13:59:29.070 (0410120400) >>> DIAG[CAR] 
25 13:59:29.177 (0410120507) <<< [NAK]#99[CAR] 

Пример содержания, которое должно быть в новом файле:

25 13:58:09.788 (0410041120) <<< [NAK]#99[CAR]0998034398[CAR]0998028069[CAR] 
25 13:58:29.896 (0410061227) <<< [NAK]#99[CAR]0998023613[CAR] 
25 13:58:49.981 (0410081311) <<< [NAK]#99[CAR]0998007552[CAR]0998019114[CAR]0998007115[CAR] 
25 13:59:10.069 (0410101399) <<< [NAK]#99[CAR]0998024143[CAR] 

ответ

1
$data = @(
    "25 13:58:09.680 (0410041011) >>> DIAG[CAR]", 
    "25 13:58:09.788 (0410041120) <<< [NAK]#99[CAR]0998034398[CAR]0998028069[CAR]", 
    "25 13:58:29.789 (0410061120) >>> DIAG[CAR]", 
    "25 13:58:29.896 (0410061227) <<< [NAK]#99[CAR]0998023613[CAR]", 
    "25 13:58:49.897 (0410081228) >>> DIAG[CAR]", 
    "25 13:58:49.981 (0410081311) <<< [NAK]#99[CAR]0998007552[CAR]0998019114[CAR]0998007115[CAR]", 
    "25 13:59:09.982 (0410101312) >>> DIAG[CAR]", 
    "25 13:59:10.069 (0410101399) <<< [NAK]#99[CAR]0998024143[CAR]", 
    "25 13:59:29.070 (0410120400) >>> DIAG[CAR]", 
    "25 13:59:29.177 (0410120507) <<< [NAK]#99[CAR]" 
) 

# Use lookahead for a digit 
$data -match "\[CAR\](?=\d)" 
+0

lookahed сама по себе не служит никакой цели AFAIK? Вы также можете легко удалить его и заменить его на '' \ [CAR \] \ d] "' –

+0

Вы правы. Над инженерной. –

Смежные вопросы