kann sed nicht mit regulären ausdrücken arbeiten?
cartun
- sonstiges
Hallo liebes Forum,
kaum war ich ein paar Wochen ausser landes muss ich wieder um eure Hilfe bitten.
Kann sed (linux bash) nicht mir normalen Regulären Ausdrücken arbeiten?
Ich versuche vergeblich alle Webadressen in einer Datei zu ersetzen mit dem wort URL, hier mal mein Kommando:
-----------------------------------------------------
sed 's/[A-z].[A-z]+[0-9]+?.[A-z]+/\URL/g' test.html
habe diesen Ausdruck auch mit awk überprüft, awk findet die Webadressen.
Danke für eure Hilfe!
shutdown -cartun
Hi,
Ich versuche vergeblich alle Webadressen in einer Datei zu ersetzen mit dem wort URL, hier mal mein Kommando:
sed 's/[A-z].[A-z]+[0-9]+?.[A-z]+/\URL/g' test.html
[.[0.[
ist für Dich eine Webadresse?
google.de
ist für Dich keine Webadresse?
Was definierst Du denn als Webadresse? Anhand des regulären Ausdrucks kann ich mir das nicht so ganz vorstellen.
cu,
Andreas
Moin.
[A-z]+.
www.
[A-z]+[0-9]+?.
eineDomainMitEvtlAuchZahlen.
[A-z]+
de
org
com
was auch immer.
Das soll nur ein Test sein, ich weiss das es auch andere andressen gibt aber ich lerne erst gerade sed kennen.
Dieser Reguläre Ausdruck muss aber richtig sein das awk mir Meldet er findet die Webadressen.
shutdown -cartun
Hallo cartun,
[A-z]
ein Buchstabe (groß oder klein) oder eines von []^_`
.
ein Punkt
[A-z]+
mehrere Buchstaben (groß oder klein) oder eines von []^_`
[0-9]+?
mehrere oder keine Zahlen (für {0,} gibt es übrigens kurz auch *)
.
ein Punkt
[A-z]+
mehrere Buchstaben (groß oder klein) oder eines von []^_`
Damit ist – wie Johannes schon sagte – [.]1.\ eine URL, www.google.de keine.
Tipps:
* nimm [A-Za-z], wenn du auf große und kleine Buchstaben matchen willst, oder verwende das i-Flag, wenn du insgesamt Groß- und Kleinschreibung ignorieren willst.
* es gibt auch URLs ohne www. davor (google.de zum Beispiel) und mit mehr als einer Subdomain davor (forum.de.selfhtml.org zum Beispiel). Möglich wäre zum Beispiel ([a-zA-Z0-9-_].)+
Viele Grüße aus Freiburg,
Marian
gudn tach!
[A-z]
ein Buchstabe (groß oder klein) oder eines von []^_`
ack.
.
ein Punkt
ack.
[A-z]+
mehrere Buchstaben (groß oder klein) oder eines von []^_`
nee, sondern
ein Buchstabe (groß oder klein) oder eines von []^_`
und dann ein + (literal).
sed != perl
[0-9]+?
mehrere oder keine Zahlen (für {0,} gibt es übrigens kurz auch *)
nee.
+? ist bei sed einfach +? (beides literal).
+? ist in perl heisst "match 1 or more times" mit der anmerkung:
If you want it to match the minimum number of times possible, follow the quantifier with a "?". Note that the meanings don't change, just the "greediness"
(quelle: perldoc perlre)
Damit ist – wie Johannes schon sagte – [.]1.\ eine URL,
nee.
ein danach gueltiger url waere z.b. "].]+0+?.]+". dieser string wuerde ersetzt werden durch "RL" (ohne "U").
prost
seth
Hallo seth,
und dann ein + (literal).
sed != perl
Hm, das wusste ich noch nicht.
Viele Grüße aus Freiburg,
Marian
gudn tach!
Kann sed (linux bash) nicht mir normalen Regulären Ausdrücken arbeiten?
kommt darauf an, was du unter "normal" verstehst.
sed verwendet BRE (basic regular expressions) und nicht ERE (extended regular expressions).
via google findest du leicht erklaerungen ueber die unterschiede.
vim kann uebrigens beides! wollt ich nur mal so erwaehnt haben.
prost
seth