Удалить определенный текст из файла с помощью PowerShell - PullRequest
0 голосов
/ 13 марта 2019

Мне нужно удалить / заменить определенный текст, который написан на нескольких строках и содержит пустые строки между строками текста.

Например:

some text

text 1

other text

text 1

Мне нужно удалить:

other text

text 1

Результат будет:

some text

text 1

Прямо сейчас у меня есть это: (Get-Content file.txt) -notmatch "other text<code>r ntext 1 "| Out-File file.txt

1 Ответ

0 голосов
/ 13 марта 2019

Есть несколько способов приблизиться к этому.

Получение первых трех строк текстового файла:

(Get-Content File.txt)[0..2]

Выбор строкиВы хотите вывести:

((Get-Content File.txt -raw) | Select-String -pattern "(?s)some text.*?text 1").matches.value

Определение номеров строк плохих линий и затем исключение их:

$File = Get-Content File.txt
$FirstBadLine = $File.IndexOf("other text")
$LastBadLine = ($file | select -skip $firstbadline).IndexOf("text 1")+$firstbadline
$file[0..($firstbadline-1)],$file[($lastbadline+1)..$file.count]

Определение первой плохой линиии пропуская известное количество строк оттуда:

$File = Get-Content File.txt
$NumberOfBadLines = 5
$FirstBadLine = $File.IndexOf("other text")
$file[0..($firstbadline-1)+($firstbadline+$NumberOfBadLines)..$file.count] | Set-Content File.txt
...