Sie sind nicht angemeldet.

1

20.10.2011, 10:23

sed mit Schrägstrich

Hallo,

ich habe mal wieder Probleme mit sed...

Ich habe eine Textdatei, in welcher in jeder Zeile ein Dateiname steht. Jetzt will ich vor jede Zeile eine URL setzen.
Aber sed übernimmt die Slashs in der URL nicht:


sed -e 's/^/http://foobar.org/full/' <list.txt >newlistfull.txt

Nach langem googlen hab ich gelesen, dass man die # verwenden soll, aber dann fügt es die Raute mit ein.

Weiss jemand da weiter ?

Vielen dank schon mal.

Greez Enschy

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »enschy« (26.10.2011, 12:09)


2

20.10.2011, 13:05

Im Prinzip kannst Du alles Moegliche als sed trenner nutzen. Ich verwende gern : oder x. Also
sed -e s:alt:neu:g oder sed -e sxaltxneuxg
Auch wenn Open-Source kostenlos ist, ist sie nicht umsonst. Dein Preis ist Dein Engagement und Mitarbeit an OS-Projekten.
Wenn Du keinen Preis bezahlen willst, bist Du die Ware. Und das ist nicht Open Source, geschweigedenn frei.

3

22.10.2011, 14:59

Oder den '/' mit Backslash quoten:

Quellcode

1
$ sed -e 's/^\/http:\/\/foobar.org\/full\//' <list.txt >newlistfull.txt


... sieht ausserdem ziemlich leet aus =)
http://www.dyle.org
IM-Account (Jabber!) sind auf meiner HP ...
There is no place like /home

http://www.gentooforum.de
http://www.gentoofreunde.org

<div>how to annoy a web developer?</span>

4

26.10.2011, 10:04

Nicht beendeter s-Befehl

Hallo Dyle,

sed -e 's/^\/http:\/\/foobar.org\/full\//' <list.txt >newlistfull.txt

besagte Zeile endet mit sed: -e Audruck #1. Zeichen 33: Nicht beendeter `s'-Befehl

Noch ne andere Idee ?

Gruß

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »enschy« (26.10.2011, 10:09)


5

26.10.2011, 10:37

Meinen Tipp hast Du übersehen? Nimm zB. ";"

Quellcode

1
sed -e 's;^http://foobar.org/full;;'
Auch wenn Open-Source kostenlos ist, ist sie nicht umsonst. Dein Preis ist Dein Engagement und Mitarbeit an OS-Projekten.
Wenn Du keinen Preis bezahlen willst, bist Du die Ware. Und das ist nicht Open Source, geschweigedenn frei.

6

26.10.2011, 11:55

Hallo bell,

nein nicht übersehen, bei deiner Variante ist Quelle und Ziel identisch...

7

26.10.2011, 12:02

ok, ich habs nun:

sed -e 's;^;http://foobar.org/full;;'

vor dem http hat ein Semikolon gefehlt...

vielen Dank

Gruss Enschy

8

26.10.2011, 14:17

Sorry, habe die Aufgabe falsch verstanden. Mein Statement hätte aus einer URL-Liste den Präfix entfernt. Also genau anders rum. :whistling:
PS: bei Deinem Statement ist jetzt am Ende ein ";" zu viel. Sed meckert nur nicht, da das ';' für Sed eine eigene Bedeutung hat: Trenner für mehrere Statements hinter einander.
Auch wenn Open-Source kostenlos ist, ist sie nicht umsonst. Dein Preis ist Dein Engagement und Mitarbeit an OS-Projekten.
Wenn Du keinen Preis bezahlen willst, bist Du die Ware. Und das ist nicht Open Source, geschweigedenn frei.

9

27.10.2011, 10:22

Zitat

Hallo Dyle,
sed -e 's/^\/http:\/\/foobar.org\/full\//' <list.txt >newlistfull.txt
besagte Zeile endet mit sed: -e Audruck #1. Zeichen 33: Nicht beendeter `s'-Befehl

Yep. Typo. Aber minimal. =)

Quellcode

1
2
3
4
5
6
7
8
9
10
11
dyle@lanfear ~ $ cat test.txt 
eins
zwei
drei
vier
dyle@lanfear ~ $ sed -e "s/^/http:\/\/foobar.org\//" < test.txt > new.txt
dyle@lanfear ~ $ cat new.txt 
http://foobar.org/eins
http://foobar.org/zwei
http://foobar.org/drei
http://foobar.org/vier
http://www.dyle.org
IM-Account (Jabber!) sind auf meiner HP ...
There is no place like /home

http://www.gentooforum.de
http://www.gentoofreunde.org

<div>how to annoy a web developer?</span>