lliillaa
Goto Top

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

Content-ID: 218780

Url: https://administrator.de/contentid/218780

Ausgedruckt am: 22.11.2024 um 12:11 Uhr

colinardo
colinardo 08.10.2013 aktualisiert um 14:56:25 Uhr
Goto Top
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
Goto Top
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
Goto Top
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}'