Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe zu sed mit Regular Expression
linuxuser
21-06-2005, 20:32
Nehmen wir an, eine Variable enthält:
"text1 text2 text3; text4, text5; text6"
text2 soll gesucht werden und alles danach bis zum ; ersetzt werden.
| sed "s/(text2.*;/textneu;/" ersetzt nun nicht bis zum 1. ; sondern bis zum letzten ;
Wie ersetze ich nur bis zum 1. ;
bash_azubi
21-06-2005, 20:47
Der Ausdruck .*; ist 'gierig', d.h. er verschlingt so viel er kann.
Folgendes geht in deinem Fall:
echo "text1 text2 text3; text4; text5; text6" | sed -e "s#\(text2\).*;\(.*;\)\(.*;\)#\1 neu;\2\3#"
linuxuser
21-06-2005, 21:53
Danke, aber ich habe das mit der Bash probiert und es klappt nicht.
Zur Vereinfach mache ich mal ein konkretes Beispiel:
var="Changes: DateTimeOriginal (Shooting Date/Time) to 1992:12:01 00:00:00; Cr; BlaBla"
Das Problem nun ist, dass "1992:12:01 00:00:00" variabel ist, also suche ich nach "Shooting Date/Time) to " und will dann alles folgende bis zum 1. ; ersetzen. Eventuell habe ich ein Quoting-Problem. Date\/Time habe ich verwendet.
Ergebnis sollte zB sein "Changes: DateTimeOriginal (Shooting Date/Time) to 1999:09:01 00:01:00; Cr; BlaBla", wobei das neue Datum von einer Bash-Variablen übergeben wird, aber das sollte kein Problem sein.
Bist du bitte so nett und schreibst die Syntax für das Beispiel hin.
peschmae
21-06-2005, 22:14
Eventuell sowas:
echo $var | sed "s#[0-9]\{4\}:[0-9]\{2\}:[0-9]\{2\} [0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}#neuesdatum#"
Aber 1:1 so nur wenn die Zeiten immer genau 4 bzw 2 Zahlen nacheinander haben :)
MfG Peschmä
linuxuser
22-06-2005, 12:35
Das wird nicht 100% klappen, "Shooting Date/Time) to " soll schon in Verbindung zur Zeit gebracht werden.
peschmae
22-06-2005, 13:03
Achso, du hast noch andere Zeilen in der Variablen. Das hatte ich ganz vergessen. Dann tust du halt noch ein /Zeugs/ vordran:
dann halt sowas:
sed "/Shooting Date\/Time/s#[0-9]\{4\}:[0-9]\{2\}:[0-9]\{2\}[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}#neuesdatum#"
MfG Peschmä
linuxuser
22-06-2005, 17:10
Danke! Mit dem komme ich nun klar.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.