einfügen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
SledgeHammer
Beiträge: 175
Registriert: 10.08.2003 17:32:04

einfügen

Beitrag von SledgeHammer » 23.02.2005 18:06:14

Hallo,
ich will das echo pipen und dann welt2 zwischen welt1 und welt3 bekommen

Code: Alles auswählen

echo ";welt1;welt3;"
Wer super wenn ihr mir da weiterhelfen könntet !

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 23.02.2005 19:26:04

meinst du so :? ?

Code: Alles auswählen

gms1:~# echo ";welt1;welt3;" | sed -e 's/welt1;welt3/welt1;welt2;welt3/'
;welt1;welt2;welt3;

Benutzeravatar
puddlejumper
Beiträge: 58
Registriert: 22.01.2005 00:29:52

Beitrag von puddlejumper » 23.02.2005 22:04:14

Hi,

da gibt es ja 47 1/2 1000-Möglichkeiten... :wink:

z.B. auch so:

Code: Alles auswählen

echo ";Welt1;Welt3;"|perl -e '$_=<STDIN>;s/([^;];)(?=[^;])/$1Welt2;/;print;'
;Welt1;Welt2;Welt3;
oder, oder, oder ;)

Gruss,
PuddleJumper

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 23.02.2005 22:13:43

puddlejumper hat geschrieben:da gibt es ja 47 1/2 1000-Möglichkeiten... :wink:
ja und ich glaube ich habe die blödeste gefunden:

Code: Alles auswählen

gms1:~# echo ";welt1;welt3;" | echo ";welt1;welt2;welt3"
;welt1;welt2;welt3

Benutzeravatar
puddlejumper
Beiträge: 58
Registriert: 22.01.2005 00:29:52

Beitrag von puddlejumper » 23.02.2005 22:25:35

ja und ich glaube ich habe die blödeste gefunden:

Code: Alles auswählen

gms1:~# echo ";welt1;welt3;" | echo ";welt1;welt2;welt3"
;welt1;welt2;welt3
:lol: :lol: :lol:

oder auch:

Code: Alles auswählen

echo ";Welt1;Welt3;"|perl -e '$_=<STDIN>;s/(\w+)(\d)(?{$a=$2+1})(;)(?=[^;])/$1$2$3$1$a;/;print;'
 
;)

Kommt halt immer darauf an, welche Daten man wirklich zur Vergügung hat, und was man genau möchte... (Jetzt mal unabhöngig von "Weltx;Weltx;... ;) )

Gruss,
PuddleJumper

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 23.02.2005 23:11:34

puddlejumper hat geschrieben:

Code: Alles auswählen

echo ";Welt1;Welt3;"|perl -e '$_=<STDIN>;s/(\w+)(\d)(?{$a=$2+1})(;)(?=[^;])/$1$2$3$1$a;/;print;'
 
Wow, super!!!

Diese Konstrukte kannte ich noch nicht, wieder etwas gelernt :):
"(?{$a=$2+1})"

Dieses habe ich bis jetzt noch nicht verstanden, es erfüllt hier ja nur einen optischen Zweck:
"(?=[^;])"


Gruss
gms

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 23.02.2005 23:25:19

Ich hab auch noch einen :twisted:

Code: Alles auswählen

echo ";Welt1;Welt3"|sed 's/;/\n/g'|(cat;echo Welt2)|sort|while read x;do echo -n "$x;";done

Benutzeravatar
puddlejumper
Beiträge: 58
Registriert: 22.01.2005 00:29:52

Beitrag von puddlejumper » 24.02.2005 09:16:26

gms hat geschrieben:Diese Konstrukte kannte ich noch nicht, wieder etwas gelernt :):
"(?{$a=$2+1})"
ist allerdings auch in perlre als "highly experimental" gekennzeichnet... ;)
Dieses habe ich bis jetzt noch nicht verstanden, es erfüllt hier ja nur einen optischen Zweck:
"(?=[^;])"
Das ist ein sog. Vorwärtsverweis, das Suchmuster wird nur "gefunden", wenn - wie in diesem Fall - nach dem Suchmuster auch wiederum ein "nicht-semikolon" folgt... Dieser Verweis ist in sofern wie Du sagtest eine Art Kommentar, als das er nicht mit ersetzt wird.

Gruss,
PuddleJumper ;)

Benutzeravatar
puddlejumper
Beiträge: 58
Registriert: 22.01.2005 00:29:52

Beitrag von puddlejumper » 24.02.2005 09:18:43

Joghurt hat geschrieben:Ich hab auch noch einen :twisted:

Code: Alles auswählen

echo ";Welt1;Welt3"|sed 's/;/\n/g'|(cat;echo Welt2)|sort|while read x;do echo -n "$x;";done
;) Auch gut! ;)

Gruss,
PuddleJumper.

Antworten