Удалить строки из определенного индекса в строке с помощью powershell

Содержимое моего текстового файла похоже на следующие строки

xcopy Source Destination /y /r /Q
xcopy Source Destination /y /r

Я пытаюсь удалить все символы после Desination.

Я пытался использовать метод Indexof и метод удаления. Но я не нашел правильного ответа

Я попытался найти третье появление пробела и удалить его. но это не работает.

$index=$line.IndexOf(" ",3)
$line=$line.RemoveAt($index)

Может ли кто-нибудь помочь мне добиться этого с помощью powershell


person Samselvaprabu    schedule 01.01.2012    source источник
comment
На всякий случай, второй параметр IndexOf — это начальная позиция поиска, а не номер вхождения.   -  person Roman Kuzmin    schedule 01.01.2012


Ответы (2)


Я предполагаю, что ваш реальный файл будет иметь такие пути:

xcopy "C:\Folder with space" "C:\Folder 2 with space" /y /r /Q

Таким образом, вы можете удалить аргументы xcopy с помощью регулярного выражения поиска/замены, такого как это:

'xcopy "C:\Folder with space" "C:\Folder 2 with space" /y /r /Q' -replace '/[\w]' , ''

Результат:

xcopy "C:\Folder with space" "C:\Folder 2 with space"

Таким образом, вам не нужно беспокоиться о том, сколько пробелов перед параметрами xcopy. Параметры будут удалены независимо от того, сколько пробелов стояло перед ними.

Регулярное выражение сопоставляет и удаляет текст с косой чертой, за которой следует класс символов, представляющий символ слова.

person Andy Arismendi    schedule 01.01.2012

[Regex]::Replace("xcopy Source Destination /y /r /Q","^(xcopy) +([^ ]+) +([^ ]+).*$","`$1 `$2 `$3") должно помочь.

person Robert Allan Hennigan Leahy    schedule 01.01.2012