2017-08-07 2 views
1

Ich versuche, eine URL in mehr als 1000 Dateien (mit PowerShell) zu ersetzen. Das ist thomas.corp.test.com:81/gt/se.ashx mit george.corp.test.com:91/gt/se.ashx ersetzen.Grep und SED funktioniert nicht in PowerShell

Ich kann es in einer Linux-Maschine mit dem folgenden Befehl ausführen.

grep -lr http:\/\/thomas\.corp\.test\.com:81\/gt\/se\.ashx . | 
    xargs sed -i '' 's/http:\/\/thomas\.corp\.test\.com:81\/gt\/se\.ashx/https:\/\/george\.corp\.test\.com:91\/gt\/se\.ashx/g' 

Benötigen Sie ein Äquivalent für Powershell bei der Suche helfen.

+0

Wer negativ hält .. bitte spezifisch – TomJava

+1

Did not downvote, aber wie kann man hoffen, dass Linux-Befehle auf einem Windows-Betriebssystem zu finden? Wenn Sie eine Bash-Umgebung unter Windows haben möchten, können Sie nach gnuwin32 (einfacher Port von GNU-Tools), MinGW (nahe einer Bash-Konsole) oder Cygwin (fast eine Linux-Emulation unter Windows) suchen. Ihre aktuelle Frage ist schlecht, weil sie keine Forschung zeigt. Du solltest [ask] lesen, um zu sehen, dass haw Fragen hier gestellt werden sollen. –

+1

@SergeBallesta: * "... wie können Sie hoffen, Linux-Befehle auf einem Windows-Betriebssystem zu finden?" * Das [Windows-Subsystem für Linux] (https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux), alias "Ubuntu unter Windows ", ist eine optionale Funktion für 64-Bit-Windows 10. –

Antwort

1

versuchen, etwas wie folgt aus:

$odl="thomas.corp.test.com:81/gt/se.ashx" 
$new="george.corp.test.com:91/gt/se.ashx" 

select-string -Path "c:\temp\*.*" -Pattern $odl -SimpleMatch | %{$curpath=$_.path; (get-content $curpath -Raw) -replace $odl, $new | Out-File $curpath} 
+0

get-childitem c: \ somedir -recurse -include *. * | wählen -expand fullname | foreach { (Get-Content $ _) -replace $ alt, $ neu | Set-Content $ _ } – TomJava

+0

Können Sie bitte den Unterschied sagen? – TomJava

+1

Mit Ihren Methoden 2 Probleme: getchilditem nehmen Verzeichnis nicht nur Datei. UND Ihr Ersetzen ist auf alle Datei nicht nur Datei, die Inhalt Ihrer alten strind -> niedrige Leistung – Esperento57

1

alt $ = "thomas.corp.test.com:81/gt/se.ashx"

neue $ = "george.corp.test. com: 91/gt/se.ashx "

get-untertitel c: \ somedir -recurse -include . | wählen -expand fullname | foreach { (Holen-Inhalt $ ) -replace $ alt, $ neu | Set-Content $

}