你好我想提取與目標「值」開頭的字符串,然後將提取的所有信息在兩者之間,那麼當它看到是的相同的taget「價值」它將停止提取。我正在處理一個txt文件。嘗試匹配一行的開頭的字符串,然後解壓到相同的字符串呈現
例:
80 E4 AD 00 80 09 4F 07 A0 00 00 01 51 53 7F 00 A4 04 00 00 80 E6 02 00 22 09 A0 00 00 00 18 20 41 43 54 00 14 15 C6 80 E8 00 00 C0 E2 1B 4F 0F A0 00 00 00 18 10 01 08 01 00 00 80 E8 00 01 C0 A0 00 00 00 18 20 01 04 05 00 02 08 A0 00 00 80 E8 00 02 C0 FF 00 01 00 00 00 07 0A C7 06 00 F3 80 77 01 80 E6 0C 00 4E 09 A0 00 00 00 18 20 41 43 54 0A A0 00 00 00 18 20 80 E8 02 00 21 08 A0 00 00 00 18 10 01 07 00 14 4F 23 7E 73 A9 80 E6 0C 00 08 2A A0 00 00 00 18 10 01 07 09 A0 00 00 00 18 10 80 C0 00 00 01 00 00 A4 04 00 0F A0 00 00 00 18 10 01 08 01 00 00 00 BA FE 02
所以我想從那裏開始的 「80 E6」 中提取,然後提取所有直到它再次顯示「80 E6」的標籤。
所以輸出將是:
80 E6 02 00 22 09 A0 00 00 00 18 20 41 43 54 00 14 AD 15 C6 80 E8 00 00 C0 E2 1B 4F 0F A0 00 00 00 18 10 01 08 01 00 00 80 E8 00 01 C0 A0 00 00 00 18 20 01 04 05 00 02 08 A0 00 00 80 E8 00 02 C0 FF 00 01 00 00 00 07 0A C7 06 00 F3 80 77 01 80 E6 0C 00 4E 09 A0 00 00 00 18 20 41 43 54 0A A0 00 00 00 18 20 80 E8 02 00 21 08 A0 00 00 00 18 10 01 07 00 14 4F 7E 23 A9 73
到目前爲止,這作爲我的腳本:
Function Extractor(){
$firstTag = '^80 E6.*$'
$secondTag = '^80 E6.*$'
$t= foreach ($line in (Get-Content C:\Users\user\Desktop\dummy.txt)) {
$x
if ($line -match $firstTag) {
do {
$foreach.current
$foreach.MoveNext() > $null
}
until ($foreach.current -match $secondTag)
$foreach.current
# continue
Write-Verbose "Next match"
}
}
$t > C:\Users\nicalder\Desktop\Project1\MasterCard_Trace\modMasterCardTraceExtracted2lined.txt
}
Extractor
難道我做錯了什麼,因爲這是爲我工作在其他情況下,偉大的..
謝謝!
我只是想通了。但是我的聲望點還不到10點,所以我不能發佈長期的解決方案。 – 2012-07-20 15:17:18