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

Eignet sich sed für Extraktion von Zeichenketten

Frage Entwicklung Batch & Shell

Mitglied: Jorquito

Jorquito (Level 1) - Jetzt verbinden

01.02.2012 um 10:33 Uhr, 2460 Aufrufe, 14 Kommentare

Hab hier mal unter Batch und Shell gepostet. Antworten auf meine Fragen mit konkretem Fall sollen mir grundsätzlich zeigen, was ich mit den Werkzeugen erreichen kann und was nicht.

Datei t3.txt:
Der Hase läuft immer dann "davon", wenn ich "ihn" rufe.


1.) Das "davon" will ich mit sed+regexp augeben. Ich weiß nur dass meine Zielmenge in "" eingeschlossen ist.
2.) Ich möchte alle in "" eingeschlossenen Worte ausgeben.
3.) Ich möchte das nte Wort ausgeben, dass in "" eingeschlossen ist.
4.) Ich möchte alles ausgeben, was nicht in "" eingeschlossen ist.
5.) Grundsätzlich: Kann ich mit sed und regexp Dinge tun, für die man unter C die Stringfunktionen aus der C-Library nutzen würde.

Bei 1 bis 4 wäre ich dankbar für Lösungen, die einfach gehalten sind.

Jorquito

P.S. Nutze zum Lernen UnxUtils / Windows.
Mitglied: Lochkartenstanzer
01.02.2012 um 11:08 Uhr
Zum Anfüttern:

echo "Der Hase läuft immer dann \"davon\", wenn ich \"ihn\" rufe." | grep  "\".*\"" -o 
Und hier ein kleines Tutorial zum Einstieg:

http://www.grymoire.com/Unix/Sed.html

lks
Bitte warten ..
Mitglied: Jorquito
01.02.2012 um 11:27 Uhr
Das führt bei mir zu Fehlermeldungen, auch nach Umstellung und Anpassungen.
-o kennt mein grep nicht.
Tutorials hab ich in den letzten 2 Tagen eine Menge studiert und vieles ausprobiert.
Hab es auch schon geschafft Teilstrings auszugeben, aber alles mehr Zufall, also ohne dass ich wusste, warum.
Bitte warten ..
Mitglied: Lochkartenstanzer
01.02.2012 um 11:52 Uhr
Zitat von Jorquito:
Das führt bei mir zu Fehlermeldungen, auch nach Umstellung und Anpassungen.
-o kennt mein grep nicht.

Kann sein. Ich habe grep unter linux benutzt (die GNU-version). Due könntest mal cygwin (http:www.cygwin.com) versuchen, wenn Du eine unix-Umgebung unter Windows haben willst.

Tutorials hab ich in den letzten 2 Tagen eine Menge studiert und vieles ausprobiert.
Hab es auch schon geschafft Teilstrings auszugeben, aber alles mehr Zufall, also ohne dass ich wusste, warum.

Dann als nächster Tip:

echo "Der Hase läuft immer dann \"davon\", wenn ich \"ihn\" rufe." | gawk -F "\"" ' { print $2" "$4" "$6" "$8" "$10 } ' 
Bitte warten ..
Mitglied: Jorquito
01.02.2012 um 12:02 Uhr
Mich interessiert nur sed "s///"
Ich brauch Lösungen. Keine neuen Aufgaben von hoher Warte.
Bitte nochmal Frage anschauen.
Bitte warten ..
Mitglied: bastla
01.02.2012 um 12:08 Uhr
@lks
Nur als Anmerkung: Das Einschließen einer Ausgabe in Anführungszeichen ist bei einer echo-Ausgabe grundsätzlich nicht erforderlich - es sollte daher für Dein Beispiel
echo Der Hase läuft immer dann "davon", wenn ich "ihn" rufe.| grep  "\".*\"" -o
genügen ...

Falls doch einmal "Anführungszeichen unter Anführungszeichen" benötigt werden, sind erstere zu verdoppeln ...

Grüße
bastla
Bitte warten ..
Mitglied: Lochkartenstanzer
01.02.2012 um 12:32 Uhr
Zitat von bastla:
@lks
Nur als Anmerkung: Das Einschließen einer Ausgabe in Anführungszeichen ist bei einer echo-Ausgabe
grundsätzlich nicht erforderlich - es sollte daher für Dein Beispiel
echo Der Hase läuft immer dann "davon", wenn ich "ihn" rufe.| grep  
> "\".*\"" -o 
> 
genügen ...

Nein, reicht nicht. Dann werden die Anführungszeichen von der shell interpretiert und nicht zum Echo durchgereicht. Den backslash braucht man auf jeden Fall. Die am Anfang und ende könnt eman weglassen, mache ich aber aus Gewohnheit dazu.
Bitte warten ..
Mitglied: Lochkartenstanzer
01.02.2012 um 12:37 Uhr
Zitat von Jorquito:
Mich interessiert nur sed "s///"
Ich brauch Lösungen. Keine neuen Aufgaben von hoher Warte.
Bitte nochmal Frage anschauen.


Nagut. Ich dachte du wilst lernen. Hier dann mal wie man das erste Wort in Anführungszeichen ausgibt:

echo "Der Hase läuft immer dann \"davon\", wenn ich \"ihn\" rufe." | sed -e "s:[^\"]*\"::1 ; s:\".*::1"
Für die n-te Zeichenkette kann man das dann so gestalten, daß man entweder [^\"]* und \" in etsprechernder Anzahl hinschreibt, oder durch passende Klammerung den regulären Ausdruck anpaßt.

Hiflt Dir das wenigstens weiter?

lks
Bitte warten ..
Mitglied: bastla
01.02.2012 um 13:57 Uhr
@lks
Dann werden die Anführungszeichen von der shell interpretiert und nicht zum Echo durchgereicht.
In diesem Fall wären sie zu verdoppeln ...

Grüße
bastla
Bitte warten ..
Mitglied: Jorquito
01.02.2012 um 15:19 Uhr
Zitat von Lochkartenstanzer:
Nagut. Ich dachte du wilst lernen.

Erst mal danke. Ich will es ja auch lernen, doch nach diesen 2 Tagen war ich einer Endlosschleife.
Beim Lernen allein aus Büchern bleiben in meinem Fall doch immer einige Fragen offen.

> echo "Der Hase läuft immer dann \"davon\", wenn ich \"ihn\" rufe." | sed -e 
> "s:[^\"]*\"::1 ; s:\".*::1" 
> 

Funktioniert. Das erste Statement, da war ich schon mal. Doch mein Irrtum war,
alles in einem s/// unterbringen zu wollen.

Fragen 2-4 versuch ich dann mal alleine.

Dein Codebeispiel, erster Teil, wie spricht man das? Etwa so:

Ersetze bei deiner Suche alles bis zum " mit nichts, und merke es dir in Puffer 1

Hiflt Dir das wenigstens weiter?
Ja.

Jorquito
Bitte warten ..
Mitglied: Lochkartenstanzer
03.02.2012 um 15:22 Uhr
Zitat von Jorquito:
> Zitat von Lochkartenstanzer:
> Nagut. Ich dachte du wilst lernen.

Erst mal danke. Ich will es ja auch lernen, doch nach diesen 2 Tagen war ich einer Endlosschleife.
Beim Lernen allein aus Büchern bleiben in meinem Fall doch immer einige Fragen offen.

>
> > echo "Der Hase läuft immer dann \"davon\", wenn ich \"ihn\" rufe." | sed -e 
> > "s:[^\"]*\"::1 ; s:\".*::1" 
> > 
Funktioniert. Das erste Statement, da war ich schon mal. Doch mein Irrtum war,
alles in einem s/// unterbringen zu wollen.

Fragen 2-4 versuch ich dann mal alleine.

Bist Du weitergekommen oder brauchst Du noch Hilfe?


Dein Codebeispiel, erster Teil, wie spricht man das? Etwa so:

Ersetze bei deiner Suche alles bis zum " mit nichts, und merke es dir in Puffer 1


Lösche zuerst alles bis zum ersten Doppelapostroph und dann lösche alles nach dem nächsten Doppelapostroph.

lks
Bitte warten ..
Mitglied: Lochkartenstanzer
03.02.2012 um 15:25 Uhr
Zitat von bastla:
@lks
> Dann werden die Anführungszeichen von der shell interpretiert und nicht zum Echo durchgereicht.
In diesem Fall wären sie zu verdoppeln ...

Das ist abhängig von der Shell. Bei der bash, mit der ich vorwiegend (auch inter Windows) arbeite, hilft Verdopplung nichts. das muß man "escapen".

lks
Bitte warten ..
Mitglied: bastla
03.02.2012 um 15:51 Uhr
@lks
Bei der bash ...
Kein Einwand - meine Anmerkungen bezogen sich nur auf CMD ...

Grüße
bastla
Bitte warten ..
Mitglied: Jorquito
03.02.2012 um 17:22 Uhr
Sed erinnert mich an getc(char) und iostream.

Wenn ich damit (zeitlich) weitergemacht habe, meldet ich mich wieder.

Gruß, Jorquito
Bitte warten ..
Mitglied: Jorquito
07.02.2012 um 10:12 Uhr
"Bist Du weitergekommen oder brauchst Du noch Hilfe?"

Hallo mal wieder,

ich komm nicht weiter. Vermute, dass ich eine Script-Alternative zur C-Library nicht erhalten werde. Beim Ersetzen scheint sed+regexp ganz brauchbar zu sein, aber beim Suchen, Extrahieren, Finden von Zeichenketten auch mit Positionsrückgabe und dergleichen mehr, wird das schwierig bzw. zu komplex. Die Tags sind halt zu greedy und was vorne weg ist, ist weg. Zudem scheint es auch dann leichter zu sein, wenn man schon weiß, was in der Textdatei zu erwarten ist.

Evtl. geht es ja mit Zunahme weiterer Unix-/Shellbefehle. Ursprünglich suchte ich für Formatkonvertierungen, die zur Zeit im compilierten Zustand vorliegen, eine externe und damit leichter zu wartende Alternative. Es sind mehr "eigene" Formate, z.B. RTF in Zwischenformat, dann nach XML für Abiword unter besonderer Berücksichtigung von Zeichen- und Absatzformaten sowie nutzerdefinierten Textersetzungen. Das geht bisher schon, wird aber bei Erweiterungen immer unübersichtlicher und anfälliger für Fehler.

Ich bedanke mich für die Hilfe. Werde administrator.de weiter als Anlaufstelle benutzen. Ist doch sehr angenehm, dass hier deutsch gesprochen wird.

LG- Jörg
Bitte warten ..
Ähnliche Inhalte
Linux Tools
Bash sed: Umlaute
Frage von plutowitschLinux Tools2 Kommentare

Hallo, ich hoffe jemand kann mir hier helfen. Ich versuche einen String dahingehend zu manipulieren, dass ich alles vor ...

Batch & Shell
Logdateien bereinigen mit sed
gelöst Frage von cuilsterBatch & Shell12 Kommentare

Hallo. Ich versuche log Dateien mittels sed Befehl zu bereinigen. Ziel ist es erstmal alle Zeilen zu löschen in ...

Batch & Shell
SED Abfrageergebnis in Variable schreiben
gelöst Frage von BloodyRulzBatch & Shell4 Kommentare

Hallo, kann mir jemand sagen, wie ich eine SED Abfrage in eine Batchvariable schreibe. Ich möchte praktisch foglendes erreichen: ...

Batch & Shell
SED Sonderzeichen maskieren klappt nicht.
gelöst Frage von BloodyRulzBatch & Shell5 Kommentare

Hallo zusammen, ich hoffe Ihr könnt mir helfen. System: Windows Folgendes Problem: Ich habe eine Konfigdatei von einem Router. ...

Neue Wissensbeiträge
MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 5 StundenMikroTik RouterOS4 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 6 StundenSicherheit

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Administrator.de Feedback

Entwicklertagebuch: Die Startseite wurde überarbeitet

Information von admtech vor 8 StundenAdministrator.de Feedback9 Kommentare

Hallo Administrator User, mit dem Release 5.7 haben wir unsere Startseite überarbeitet und die Beiträge und Fragen voneinander getrennt. ...

Vmware

VMware Desktopprodukte sind verwundbar

Information von Penny.Cilin vor 13 StundenVmware

Die VMware-Anwendungen zum Umgang mit virtuellen Maschinen Fusion, Horizon Client und Workstation sowie die Plattform NSX sind verwundbar. Davon ...

Heiß diskutierte Inhalte
Visual Studio
Vb.net-Tool zum Erzeugen einer Outlook-E-Mail
Frage von ahstaxVisual Studio24 Kommentare

Hallo, ich möchte gerne ein vb.net-Tool schreiben, das am Ende eine Outlook-E-Mail erzeugt. Grundsätzlich ist mir klar, wie das ...

Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server16 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows Netzwerk
Netzwerk Neustrukturierung
Frage von IT-DreamerWindows Netzwerk16 Kommentare

Hallo verehrte Community und Admins, bei uns im Haus steht eine Neustrukturierung an. Dafür benötige ich von euch ein ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...