Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows NetzwerkWindows PhoneWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

windows, sed, grep - suchen und ersetzen in dateien batch im verzeichnis rekursiv

Frage Entwicklung Batch & Shell

Mitglied: micneu

micneu (Level 2) - Jetzt verbinden

19.04.2009, aktualisiert 00:36 Uhr, 15090 Aufrufe, 4 Kommentare

Hallo Leute,

Ich benötige euere unterstützung.
Ich muß in einigen *.ini Dateien nach bestimmten wörtern suchen und die *.ini Dateien liegen alle in verschachtelten verzeichnissen.
Das suchen und erstezen will ich in einerm BATCH erledigen das es auf ca. 50 Computern gemacht werden muß ;-(
Das ganze sind windows rechner.
Habt ihr eine Idee wie ich es mit Board mitteln am windows rechner machen kann, habe auch versucht mit sed und grep zu machen.

habe versucht mit sed und grep aber kein erfolg.

grep:

damit bekomme ich schonmal den pfad der dateien:

01.
 
02.
grep -r -l FileMax= *
sed:

hiermit bekomme ich wenn ich im verzeichnis der datei bin die richtige zeiler ausgegeben:

01.
 
02.
sed -n "/40000/p" *.ini
habe es versucht mit einer for schleife:

01.
 
02.
for /R %cd% %f in (*.ini) do sed -n "/40000/p %f
oder mit einer kombination von GREP und SED:

01.
 
02.
grep -r -l FileMax= B* | sed -n "/FileMax=/p"
nur bekomme ich keine ausgabe.

wie könnte ich sowas "einfach" lösen????

hoffe mir kann jemand helfen.
Mitglied: Biber
19.04.2009 um 01:32 Uhr
Moin micneu,

ich bin noch etwas unsicher, ob Du
  • Dich im Moment auf das Suchen der relevanten beschränken willst
  • oder tatsächlich bestimmte Zeilen ersetzen willst
  • und falls ja, ob Du das per Cmd-Prompt oder per Batch abfackeln willst.
Irgenwie passen die Ankündigungen in Deinem Beitrag (Suchen und Ersetzen per Batch) und die Beispielzeilen (Anzeigen der Fund-Zeilen mit Zeilennummer per CMD-Line) nicht so ganz übereinander.

Also: Kompromissangebot.
Wenn Du vom CMD-Prompt aus mit einer Kombination von FOR /R und Sed diese FileMax-Einträge ersetzen willst, dann
01.
FOR /R . %f in (*.ini) do Sed -e 's/FileMax=.*/FileMax=1234/g' "%f"
Ungetestet, aber soll gemäß Plan bewirken
FOR /R . %f in (*.ini) do
---> Allen *.ini-Dateien, im folgenden %f genannt, unterhalb des aktuellen Verzeichnisses, tue folgendes an
Sed -e 's/FileMax=.*/FileMax=1234/g' "%f"
--> -e editiere
--> und zwar switche/ersetze alle Strings "FileMax=beliebige Zeichen" durch "FileMax=1234
-->und zwar in allen Dateien "%f", die ich in Hochkomma gesetzt habe, falls Leerzeichen in Pfad oder Dateinamen sind.

Falls Du mehrere (verschiedene) Zeilen ersetzen willst, dann solltest Du die ganzen einzelnen AlteZeile/NeueZeile-Anweisungen in eine separate Textdatei schreiben und sed mit Parameter -f Textdateiaufrufen.

Grüße
Biber
Bitte warten ..
Mitglied: miniversum
19.04.2009 um 10:02 Uhr
Wenn es mit Boardmitteln erledigt werden soll kannst du aber sed nicht verwenden. Oder ist das auf allen Rechnern vorhanden? Sonst entweder das sed umgehen mit Boardmitteln oder als exe mitliefern.
Bitte warten ..
Mitglied: Biber
01.05.2009 um 18:21 Uhr
Moin micneu,

besteht Deinerseits noch Interesse an diesem Beitrag oder soll ich den zu den anderen ungeklärten Fällen umbetten?

Grüße
Biber
Bitte warten ..
Mitglied: micneu
04.05.2009 um 17:27 Uhr
Danke ich habe die Lösung.....

FOR /R . %%f in (*ons.ini) do Sed -i.bak "s/FileMax=200000/FileMax=40000/g;s/Preserved=1Preserved=0/g" "%%f"


danke .....
Bitte warten ..
Neuester Wissensbeitrag
Administrator.de Feedback

Entwicklertagebuch: Neue Werkzeuge zum Bearbeiten von Beiträgen

(5)

Information von admtech zum Thema Administrator.de Feedback ...

Heiß diskutierte Inhalte
Batch & Shell
GELÖST Erstellen von Verknüpfungen - Parameterübergabe, Leerzeichen im Pfad (13)

Frage von Alforno zum Thema Batch & Shell ...

Server-Hardware
GELÖST Suche Server für Testumgebung zuhause (13)

Frage von MartinBuchs zum Thema Server-Hardware ...

Windows Installation
Dell Windows 7 Sysprep (10)

Frage von Dome1988 zum Thema Windows Installation ...

Server
SSH-Verbindung zum Server ohne Port-Forwarding (10)

Frage von Fevenius zum Thema Server ...