Powershell получить строку после косой черты - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть текстовый файл, в котором я хочу иметь слово только после слова sh "/

Пример: hello / world

И я просто хочу все, что идет после / в моем примере только «мир» я начал следующим образом:

Get-Content .\myfile.txt 

Ответы [ 2 ]

0 голосов
/ 02 апреля 2020

здесь несколько другой метод. [ ухмылка ] используется встроенный командлет Split-Path.

$InString = 'Hello/World'
$FinalPart = Split-Path -Path $InString -Leaf

$FinalPart

выход = World

0 голосов
/ 02 апреля 2020

Для этого вы можете использовать -replace оператор . Ниже будут заменены все символы до и будут включены первые / в каждой строке. Линии, которые не совпадают, не будут изменены.

# Example with one line
'hello/world' -replace '^.*?/'

# Example reading each line of a text file
(Get-Content .\myfile.txt) -replace '^.*?/'

Если вы хотите удалить все символы до и включая последний / в каждой строке, вы можете использовать жадное совпадение .*:

(Get-Content .\myfile.txt) -replace '^.*/'

Вы можете применять те же понятия, что и выше, и обрабатывать весь файл как одну строку с включенным Get-Content ключом -Raw. Это позволит вам удалить все символы до первого вхождения / или последнего вхождения /. Все, что вам нужно добавить, это однострочный синтаксис модификатора (?s), который позволяет . сопоставлять символы новой строки:

# Remove Up Until First /
(Get-Content .\myfile.txt -Raw) -replace '(?s)^.*/'

# Remove Up Until Last /
(Get-Content .\myfile.txt -Raw) -replace '(?s).*/'

Объяснение:

^ указывает на начало строки. .*? - ленивое совпадение для всех персонажей. Поскольку у нас есть последующий /, он будет лениво совпадать, пока не будет найден /. Поскольку строка замены не указана, соответствующие символы просто удаляются.

Однако, это может помочь набрать строку регулярного выражения, чтобы охватить только точный сценарий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...