Как я могу заменить использование новых строк PowerShell?

38
задан Peter Mortensen 27 December 2014 в 14:23
поделиться

2 ответа

CRLF является двумя символами, конечно, CR и LF. Однако `n состоит из обоих. Например:

PS C:\> $x = "Hello
>> World"

PS C:\> $x
Hello
World
PS C:\> $x.contains("`n")
True
PS C:\> $x.contains("`r")
False
PS C:\> $x.replace("o`nW","o There`nThe W")
Hello There
The World
PS C:\>

я думаю, что Вы сталкиваетесь с проблемами с `r. Я смог удалить `r из Вашего примера, использовать [только 114], и он работал. Конечно, я не знаю точно, как Вы генерировали исходную строку, таким образом, я не знаю то, что там.

37
ответ дан Emperor XLII 27 November 2019 в 03:28
поделиться

В моем понимании Получать-содержание устраняет ВСЕ новые строки/возвраты каретки, когда это прокручивает Ваш текстовый файл через конвейер. Чтобы сделать мультилинию regexes, необходимо повторно объединить массив строк в одну гигантскую строку. Я делаю что-то как:

$text = [string]::Join("`n", (Get-Content test.txt))
[regex]::Replace($text, "t`n", "ting`na ", "Singleline")

Разъяснение: маленькие файлы только люди! Не примеряйте это Ваш 40  файл журнала ГБ:)

23
ответ дан Peter Mortensen 27 November 2019 в 03:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: