2016-11-29 6 views
1

PowerShellでファイルをフィルタリングしようとして、値のある行のみが含まれています。 [CAR]タグの後ろに値があるかどうかを判断する方法はありますか?PowerShellの値を持つ.txtファイルの行をフィルタします。

また、このような記述が必要ですか?

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

例RAWファイル:新しいファイルでなければならないコンテンツの

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は、私の知る限り何の目的を果たしていませんか? \ [CAR \] \ d]で置き換えるだけで簡単に削除できます。 " –

+0

あなたは正しいです。エンジニアリング以上。 –

関連する問題