Премахване на низове от определен индекс в ред с помощта на 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