こんにちは私はターゲット「値」で始まる文字列を抽出しようとしています。その後、その間のすべての情報を抽出し、同じタゲット「値」が表示されると抽出を停止します。txtファイルを扱っています。
元:
80 E4 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 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 80 E6 0C 00 2A 08 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
これは他の例ではうまく機能していたので、私は何か間違ったことをしていますか?
ありがとう!