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-Key: 218780

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

Printed on: April 19, 2024 at 19:04 o'clock

Member: colinardo
colinardo Oct 08, 2013 updated at 12:56:25 (UTC)
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
Member: LLIILLAA
LLIILLAA Oct 08, 2013 at 13:21:09 (UTC)
Goto Top
Hallo Uwe,

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

Vielen, vielen Dank.
Member: Endoro
Endoro Oct 08, 2013 updated at 14:05:37 (UTC)
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}'