輸入文件內容位於底部。該圖像顯示更好的文件格式。在PowerShell中的IF語句中使用正則表達式匹配的問題
正如您從我的輸入文件中看到的,它帶有許多我不需要的行,所以我試圖告訴Powershell在行匹配此模式時讀取內容(請參見下文)。但它返回False,而不是做我喜歡的,它是複製正則表達式和指示塊結束位置的 - 符號之間的所有內容。
$InputFile = gc "D:\input_file.txt"
$Dest = "D:\Desktop\Final_file.txt"
#PATTERN I´M LOOKING FOR:
0000 00XKDPMBBRAXXX00000
1965 81PWSLKDTRUGXX00000
#REGEX I´VE CREATED BASED ON ABOVE CONTENT
$re = [regex]'(\d{4}\s\d{2}\[a-z]{12}\d{5})'
$file_line_num = 0
$mesg_line_num = 0
$Dest_count = 0
foreach ($line in $Input_File) {
$file_line_num = $file_line_num + 1
# Find where message starts, any other lines are ignored
if ($line -match $re) {
[void]$foreach.MoveNext() # skip lines not needed
$msg_line_num = 0
do {
[void]$foreach.MoveNext()
$line = $foreach.current
$msg_line_num = $msg_line_num + 1
if ($msg_line_num -lt 3) {
$header = $line.substring(7,8) + $line.substring(16, 3)
add-content $Dest $header
} else {
add-content $Dest $line
}
} until ($line -eq "-" -or $line -eq $null)
}
}
Exit
text
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
TEXTHERE TEXTHERE TEXTHERE
TEXTHERE
.TEXTHERE TEXTHERE TEXTHERE
TEXTHERE TEXTHERE
0000 00XKDPMBBRAXXX00000
1965 81PWSLKDTRUGXX00000
123 99
TEXTHERE
TEXTHERE//TEXTHERE
TEXTHERE
TEXTHERE
TEXTHERE
TEXTHERE//TEXTHERE
TEXTHERE//TEXTHERE
TEXTHERE TEXTHERE
TEXTHERE TEXTHERE
TEXTHERE TEXTHERE
-
=TEXTHERE TEXTHERE
=TEXTHERE TEXTHERE
NNNN++++++++++++++++++++++++++++++++++++
+ +
+ -- =TEXTHERE TEXTHERE +
+ =TEXTHERE TEXTHERE +
+ +
++++++++++++++++++++++++++++++++++++++++
TEXTHERE TEXTHERE TEXTHERE
TEXTHERE
.TEXTHERE TEXTHERE TEXTHERE
TEXTHERE TEXTHERE
0000 00XKDPMBBRAXXX00000
1965 81PWSLKDTRUGXX00000
123 99
TEXTHERE
TEXTHERE//TEXTHERE
TEXTHERE
TEXTHERE
TEXTHERE
TEXTHERE//TEXTHERE
TEXTHERE//TEXTHERE
TEXTHERE TEXTHERE
TEXTHERE TEXTHERE
TEXTHERE TEXTHERE
-
=TEXTHERE TEXTHERE
=TEXTHERE TEXTHERE
NNNN++++++++++++++++++++++++++++++++++++
+ +
+ -- =TEXTHERE TEXTHERE +
+ =TEXTHERE TEXTHERE +
+ +
++++++++++++++++++++++++++++++++++++++++
也從代碼既不是來自文本,我可以看到所需的輸出應該是什麼樣子,只過濾匹配模式到輸出文件中的行? – LotPings
感謝您的編輯,不知道該怎麼做。輸出應顯示從正則表達式模式開始的內容,直到找到文件內所有內容塊的 - (短劃線)符號。 – DevHawk
評論僅供參考。編輯您的問題以包含附加信息。如你所見,這是難以辨認的。你的問題沒有告訴任何關於更多信息的事情。 – LotPings