Как заменить каждый префикс в текстовом файле командной строкой? - PullRequest
0 голосов
/ 15 октября 2018

У меня есть текстовый файл, который выглядит примерно так:

0x1cb139c0 (110): file:///C:/Users/igues/Desktop/New folder/NOTEPAD.exe
0x1cb13f40 (110): file:///C:/Users/igues/Desktop/New folder/NOTEPAD.exe
0x1cb14bc0 (110): file:///C:/Users/igues/Desktop/New folder/NOTEPAD.exe
0x1cb38fc0 (104): file:///C:/Program Files/Everything/Everything.exe
0x1cb39fc0 (104): file:///C:/Program Files/Everything/Everything.exe
0x1cb3a040 (104): file:///C:/Program Files/Everything/Everything.exe
0x1cb43730 (100): file:///C:/Program Files/Notepad++/notepad++.exe
0x1cb44300 (100): file:///C:/Program Files/Notepad++/notepad++.exe
0x1cb44b50 (100): file:///C:/Program Files/Notepad++/notepad++.exe

В конечном итоге я хочу, чтобы он выглядел так:

C:/Users/igues/Desktop/New%20folder/NOTEPAD.exe
C:/Program Files/Everything/Everything.exe
C:/Program Files/Notepad++/notepad++.exe

Как удалить этот надоедливый префикс, используякомандная строка (или PowerShell)?Я уже знаю, как удалить дубликаты строк.Мне просто нужно удалить этот префикс " 0x ???????? (???): file: /// C: / " в начале каждой строки.


Отредактировано для исправления префикса.

Ответы [ 3 ]

0 голосов
/ 15 октября 2018

Оператор PowerShell на основе регулярных выражений -replace хорошо подходит для удаления префиксов:

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

Regex ^.*/// соответствует всем символам (.*) от начала (^) до /// и - из-за отсутствия замещающей строки - по умолчанию заменяет совпавшую строку на пустую строку , т. Е. удаляет it.

0 голосов
/ 15 октября 2018

попробуйте это:

Get-Content "C:\temp\test.txt" | %{($_ -split ': ')[1] -replace '/New folder/', '/New%20folder/'} | select -Unique
0 голосов
/ 15 октября 2018

Вы можете использовать метод Split из класса regex :

$file = Get-Content C:\file.txt
foreach ($line in $file) {
    [regex]::split($line, '///')[1]
}

И в результате вы можете сохранить его в том же файле или другом.

...