У меня есть каталог файлов .txt, который выглядит следующим образом:
[LINETYPE]S[STARTTIME]00:00:00
[LINETYPE]P[STARTTIME]00:00:00
[LINETYPE]B[STARTTIME]00:59:00
[LINETYPE]C[STARTTIME]00:59:00
[LINETYPE]C[STARTTIME]00:59:30
[LINETYPE]S[STARTTIME]01:00:00
[LINETYPE]P[STARTTIME]01:00:00
[LINETYPE]B[STARTTIME]01:59:00
[LINETYPE]C[STARTTIME]01:59:00
[LINETYPE]C[STARTTIME]01:59:30
[LINETYPE]S[STARTTIME]02:00:00
Я хотел бы удалить все вхождения [LINETYPE]S
, кроме первого, которое всегда будет 00:00:00 и в первой строке, а затем повторно сохраните файл в новом месте.
То есть [LINETYPE]S[STARTTIME]00:00:00
должно присутствовать всегда, но другие строки, начинающиеся с [LINETYPE]S
, должны быть удалены.
Это то, что я придумал, и это работает, за исключением того, что он удаляет все [LINETYPE]S
строки, включая первую. Кажется, я не могу понять, как сделать эту часть после Googling, поэтому я надеюсь, что кто-то может указать мне правильное направление. Спасибо за вашу помощь!
Get-ChildItem "C:\Users\Me\Desktop\Samples" -Filter *.txt | ForEach-Object {
Get-Content $_.FullName | Where-Object {
$_ -notmatch "\[LINETYPE\]S"
} | Set-Content ('C:\Users\Me\Desktop\Samples\Final\' + $_.BaseName + '.txt')
}