Archiv verlassen und diese Seite im Standarddesign anzeigen : Simple sed-Regex-Frage
linuxuser
30-05-2005, 18:20
Ich spiel mich nun schon einge Zeit rum, um die 2. "Spalte" einer Tabelle mit sed zu extrahieren. Mir ist klar, dass man das auch mit cut machen kann, und da schaffe ich es auch.
Die Tabelle sieht etwa so aus:
Irgendein komischer \Text/ mit allen möglichen Zeichen: Wert 1
Ein anderer Text. Der Inhalt ist : Wieder irgendwas
Diese 2 Zeilen befinden sich in einer Variable.
Es geht also um den Teil _nach_ dem Doppelpunkt, wobei Leerzeichen am Anfang und Ende entfernt werden sollen.
Gewünscht ist in einer neuen Variable:
Wert 1
Wieder irgendwas
Danke für Tipps. Bitte konkrete Hinweise. Durch Regex habe ich mich nun schon einige Zeit durchgewühlt.
peschmae
30-05-2005, 18:38
peschmae@thinkpad:~$ echo "Irgendein komischer \Text/ mit allen möglichen Zeichen: Wert 1
Ein anderer Text. Der Inhalt ist : Wieder irgendwas
" | sed "s#.*: ##"
Wert 1
Wieder irgendwas
peschmae@thinkpad:~$
dürfte wohl das sein was du suchst - halt noch mit einem VAR=$() drumherum
MfG Peschmä
linuxuser
30-05-2005, 18:48
Danke, das löscht aber die Leerzeichen am Ende nicht.
Ich hatte davor mit
| sed -e 's/.*: //'
experimentiert und da bleiben auch die Leerzeichen am Ende erhalten. Die Leerzeichen im Ergebnis sind variabel, da unterschiedlich viele Worte vorkommen.
linuxuser
30-05-2005, 19:06
So, ich habe nun doch eine grundsätzlich funktionierende Lösung ertestet:
| sed -e 's/.*: //' | sed 's/^ *//' | sed 's/ *$//'
Welche Vorteile hat nun der Vorschlag von peschmae gegenüber meiner bzw. wie kann man das noch optimieren?
peschmae
30-05-2005, 23:07
Da hatte ich nicht aufgepasst :D
deine Version so ist ok - aber ich würde das alles in einem sed-Aufruf ausführen lassen und nicht in mehreren Prozessen. Dürfte sparsamer sein.
MfG Peschmä
linuxuser
30-05-2005, 23:36
Könntest du bitte die _genaue_ Syntax posten, wie das in 1 Aufruf läuft ?
Ich bin schon froh, dass ich letztlich eine Variante doch noch selber geschafft habe.
peschmae
31-05-2005, 09:07
Sobald das etwas komplizierter wird schreibst du so sachen eh am besten in eine Datei - also
s/.*: //
s/^ *//
s/ *$//
und dann: sed -f datei.sed
oder aber auch sowas:
| sed -e 's/.*: //
s/^ *//
s/ *$//'
Wichtig hier die Anführungszeichen damit die Bash sed nicht etwa die Zeilenumbrüche klaut bzw. du das überhaupt eintippen kannst.
MfG Peschmä
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.