lliillaa

SED replace mit dem Anfang eines Textes

Hallo Forum,

schon wieder ein Problem.

Folgenden String habe ich:
 /cgi-public/wms_inspire_bfg#ef.environment,test,bla

Diesen muss ich mit SED in folgendes formatieren:
 /cgi-public/wms_inspire_bfg#ef.environment
 /cgi-public/wms_inspire_bfg#test
 /cgi-public/wms_inspire_bfg#bla 

Probiert habe ich es bisher so:
 sed 's|,|\n^.\#|g' test  

Leider klappt das nicht folgende Ausgabe:
 /cgi-public/wms_inspire_bfg#ef.environment
 ^.#test
 ^.#bla

Ist mein Problem mit SED überhaupt lösbar?
Irgendwelche Ideen?

Schöne Grüße
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 218780

Url: https://administrator.de/forum/sed-replace-mit-dem-anfang-eines-textes-218780.html

Ausgedruckt am: 12.07.2025 um 22:07 Uhr

colinardo
colinardo 08.10.2013 aktualisiert um 14:56:25 Uhr
Hallo LLIILLAA,
kenne sed jetzt nicht so gut aber als Alternative hier eine Möglichkeit mit awk
echo '/cgi-public/wms_inspire_bfg#ef.environment,test,bla' | awk -F "#" '{split($2,terms,",");for(i=1;i<=length(terms);i++){print $1"#"terms[i]}};'
Grüße Uwe
LLIILLAA
LLIILLAA 08.10.2013 um 15:21:09 Uhr
Hallo Uwe,

super, das klappt!
So habe ich das jetzt einfach übernommen.
Vielleicht klappt das ja mit sed garnicht.

Vielen, vielen Dank.
Endoro
Endoro 08.10.2013 aktualisiert um 16:05:37 Uhr
Hi, geht schon:
sed -r 's|(.*\.\w+),.*|\1|'  
sed -r 's|(.*#)\w+\.\w+,(\w+),.*|\1\2|'  
sed -r 's|(.*#)\w+\.\w+,\w+,(\w+)|\1\2|'  
lg.

PS: Wie colinardo schon schreibt, mit awk tut man sich hier leichter:
 awk -F[#,.] '{print $1"#"$2"."$3"\n"$1"#"$4"\n"$1"#"$5}'