Top-Themen

Aktuelle Themen (A bis Z)

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 MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Suchen und ersetzen über mehrere zeilen (awk oder sed)

Mitglied: micneu

micneu (Level 2) - Jetzt verbinden

04.04.2011, aktualisiert 19:33 Uhr, 5870 Aufrufe, 2 Kommentare

wie oben schon angedeutet, ich benötige eure unterstützung.
ich möchte mit awk oder sed einige dateien (über 100) bearbeiten in der ich einen bereich löschen möchte.
und irgend wie bekomme ich den regulären ausdruck nicht hin.

Hier meine Daten, ist eine automatisch generierte datei von wpkg:
<wpkg><package id="acrobat" name="Acrobat Reader 8.1.2" revision="812" reboot="false" priority="10">
<check type="uninstall" condition="exists" path="Adobe Reader 8.1.2 - Deutsch"/>
<install cmd="msiexec /q /i &quot;%SOFTWARE%\pkg\adobe\AcroRead.msi&quot; allusers=1">
<exit code="0"/>
</install>
<remove cmd="MsiExec.exe /q /x{AC76BA86-7AD7-1031-7B44-A70500000002}"/>
<upgrade cmd="msiexec /q /i &quot;%SOFTWARE%\pkg\adobe\AcroRead.msi&quot; allusers=1">
<exit code="0"/>
<exit code="3010"/>
</upgrade>
</package>
><package id="ReportViewer" name="Microsoft Report Viewer Redistributable 2008" revision="2" reboot="false" priority="10">
<check type="uninstall" condition="exists" path="Microsoft Report Viewer Redistributable 2008"/>
<install cmd="%SOFTWARE%\pkg\wsus\ReportViewer.exe /q">
<exit code="0"/>
</install>
<remove cmd="%SOFTWARE%\pkg\wsus\ReportViewer.exe /qu"/>
</package>
<package id="jre" name="Java Runtime Environment 1.5.0_08" revision="1" reboot="true" priority="2">
<check type="uninstall" condition="exists" path="J2SE Runtime Environment 5.0 Update 8"/>
<install cmd="msiexec /q /i %SOFTWARE%\pkg\java\jre1.5.0_08.msi allusers=1 REBOOT=Suppress CUSTOM=1 IEXPLORER=1 MOZILLA=1 NETSCAPE6=1 JAVAUPDATE=0 ADDLOCAL=ALL">
<exit code="0"/>
</install>
<remove cmd="MsiExec.exe /q /x{3248F0A8-6813-11D6-A77B-00B0D0150080} REBOOT=Suppress"/>
<upgrade cmd=""/>
</package>
<package id="ntp-client" name="ntp client configuration" revision="2" reboot="false" priority="1" execute="once">
<install cmd="%SOFTWARE%\pkg\ntp\install.bat"/>
<upgrade cmd="%SOFTWARE%\pkg\ntp\install.bat"/>
<remove cmd="%SOFTWARE%\pkg\ntp\uninstall.bat"/>
</package>

und den bereich will ich löschen:

<package id="jre" name="Java Runtime Environment 1.5.0_08" revision="1" reboot="true" priority="2">
<check type="uninstall" condition="exists" path="J2SE Runtime Environment 5.0 Update 8"/>
<install cmd="msiexec /q /i %SOFTWARE%\pkg\java\jre1.5.0_08.msi allusers=1 REBOOT=Suppress CUSTOM=1 IEXPLORER=1 MOZILLA=1 NETSCAPE6=1 JAVAUPDATE=0 ADDLOCAL=ALL">
<exit code="0"/>
</install>
<remove cmd="MsiExec.exe /q /x{3248F0A8-6813-11D6-A77B-00B0D0150080} REBOOT=Suppress"/>
<upgrade cmd=""/>
</package>

01.
regex: (<package id="jre" name="Java Runtime Environment 1.5.0_08".*\s+.*\s+.*\s+.*\s+.*\s+.*\s+.*\s+.*)
wie kann ich das kürzer und flexibler machen?
ich würde es gerne so lösen:
01.
regex: (<package id="jre" name="Java Runtime Environment 1.5.0_08".*\s+.*<\/package>)
so das ich alles zwischen package.... und \package> finde.

hoffe hier kann mir jemand helfen.

gruß michael
Mitglied: micneu
05.04.2011 um 11:46 Uhr
hallo leute,

ich habe etwas gesucht und sowas gefunden:

01.
#!/usr/bin/perl -w 
02.
 
03.
open(INFILE, "<test.xml") or die "Can't open input.txt: $!"; 
04.
open(OUTFILE, ">output.txt") or die "Can't open output.txt: $!"; 
05.
 
06.
my $string = do { local $/; <INFILE> }; 
07.
my $text = $string; 
08.
$text =~ s/(<package id="jre" name="Java Runtime Environment.*<\/package>)//ms; 
09.
print OUTFILE $text; 
10.
close INFILE; 
11.
close OUTFILE;
soweit klappt es nur das alles bis zum letzten </package> gelöscht wird.
alles was zwischen "<package id="jre" name="Java "" und "</package>".

wie mache ich das.

gruß michael
Bitte warten ..
Mitglied: DauDau
29.06.2011 um 12:36 Uhr
Hallo Michael,
ich nehme an, dass Du mit
"soweit klappt es nur das alles bis zum letzten </package> gelöscht wird.
alles was zwischen "<package id="jre" name="Java "" und "</package>"."

sagen wolltest, dass der reguläre Ausdruck nicht richtig funktioniert, weil er nicht nur bis zum nächsten "</package>"-Element alles löscht, sondern alles bis zum letzten Auftauchen von "</package>" im Text.

Um dieses "gierige" Verhalten von Quantifiern (*,+) zu ändern, kann man in Perl ein Fragezeichen hinter den Quantifier stellen:
$text =~ s/(<package id="jre" name="Java Runtime Environment.*?<\/package>)//ms;

Ich habe es probiert und es funktioniert.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Sed - Zeile mit bestimmten Anfang löschen

gelöst Frage von PanubuBatch & Shell2 Kommentare

Hallo zusammen, ich habe schon mal ein wenig mit sed "herumgespielt" aber noch nicht wirklich zu dem Ergebnis gekommen, ...

Batch & Shell

Batch Zeile suchen und ersetzen Variabler Pfad

gelöst Frage von pi0h.kkBatch & Shell6 Kommentare

Hallo, ich stehe leider vor einem kleinen Problem was ich nicht in den Griff bekommen. Ich möchte in mehreren ...

Ubuntu

Sed, 4. zeile nach regexp ausgeben

Frage von rsadmchefUbuntu1 Kommentar

Hallo Team, Mein System ist Lubuntu 14.04 LTS Ich benötige ein wenig sed - Hilfe. Meine zu bearbeitende Datei ...

Microsoft Office

Text in mehreren .docx suchen und ersetzen

gelöst Frage von DerWoWussteMicrosoft Office14 Kommentare

Moin Kollegen. Ich hoffe auf Antworten von Leuten, die genau das per Tool schon mal gemacht haben: Selektiere mehrere ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 1 TagWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 1 TagAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 2 TagenHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 2 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Windows Netzwerk
WSUS4 und Windows 10 Updates automatisch installieren
Frage von sammy65Windows Netzwerk15 Kommentare

Hallo miteinander, ich habe mit einen neuen WSUS Server aufgesetzt Server 2016 darauf einen aktuellen WSUS. Grund, wir stellen ...

Speicherkarten
Vergessliche USB-Sticks?
Frage von hanheikSpeicherkarten14 Kommentare

Ich habe in den letzten Tagen 500 USB-Sticks mit Bilddateien bespielt. Obwohl ich die Dateien mit größter Sorgfalt kopiert ...

Hyper-V
Hyper-V mit altem XEON-Server. Was ist falsch?
Frage von LollipopHyper-V11 Kommentare

Hallo Bin etwas frustriert. Kleinbetrieb, ca. 15 PC's, 2 Stk. Server mit einigen virtuellen PC's für Fernwartung, VaultServer für ...

Windows Server
NTFS Berechtigungen Ordnerstruktur
Frage von hukahu23489Windows Server11 Kommentare

Hallo, ich bin seit kurzem in einer neuen IT-Abteilung und bin über das Berechtigungskonzept des Unternehmens sehr schockiert. Ich ...