Saya mencoba mencocokkan acara di mana satu-satunya cara untuk mengetahui kapan suatu acara dimulai dan berakhir adalah dengan tajuk atau nilai pertama dalam acara multi-baris (mis. Pada dasarnya, menggunakan header sebagai jangkar akhir untuk mendapatkan keseluruhan acara. Juga, acara terakhir akan berakhir di akhir file, jadi tidak ada jangkar untuk itu. Saya tidak yakin bagaimana membuat ini bekerja.

Contoh Peristiwa (Tidak ada spasi di antara baris)

START--random stuff here 
more random stuff on this new line 
more stuff and things 
START--some random things 
additional random things 
blah blah 
START--data data more data 
START--things 
blah data
$FileContent | select-string '^START--(.*?)^START--' -AllMatches | Foreach {$_.Matches} | Foreach {$_.Value}
2
MrMr 8 Agustus 2019, 19:52

1 menjawab

Jawaban Terbaik

Anda dapat membaca dalam file menjadi satu variabel (dapat dilakukan dengan meneruskan opsi -Raw ke Get-Content, misalnya) dan membaginya di awal baris yang dimulai dengan START-- tetapi garis pertama:

$contents = Get-Content 'your_file_path' -Raw
$contents -split '(?m)^(?!\A)(?=START--)'

akan menghasilkan

enter image description here

Detail ekspresi reguler

  • (?m) - opsi multibaris AKTIF
  • ^ - sekarang, ini cocok dengan awal baris karena (?m)
  • (?!\A) - bukan awal dari seluruh string/teks
  • (?=START--) - lokasi yang segera diikuti dengan substring START--.
3
Wiktor Stribiżew 8 Agustus 2019, 17:08