Re: sed Problem die 2.

2005-09-07 Diskussionsfäden Sven Gehr
Am Mi 07.09.2005 11:38 schrieb Moritz Karbach <[EMAIL PROTECTED]>:

Hallo,

> > Ich muß eine Nummer aus folgendem String extrahieren:

> wenn du viele solche Sachen machen musst, lohnt sich für dich
> vielleicht ein
> Blick auf Perl!

> --- extract.pl ---
> #!/usr/bin/perl
> while(<>)
> {
> if ( m/(([d/-]+))/ )
> {
> print $1;
> print "
";
> }
> }
>
> Und dann:
>
> $ ./extract.pl < file

Danke für deine Hilfe. Ich habe es zwischenzeitlich mit einem
Bash-Skript gemacht. Habe schon viel gutes über Perl gehört allerdings
habe ich im Moment nicht die Zeit noch eine weitere Sprache zu lernen.
Danke!

Viele Grüße
Sven



Re: sed Problem die 2.

2005-09-07 Diskussionsfäden Moritz Karbach
Hi,

> Ich muß eine Nummer aus folgendem String extrahieren:

wenn du viele solche Sachen machen musst, lohnt sich für dich vielleicht ein 
Blick auf Perl!

zB:

--- extract.pl ---
#!/usr/bin/perl
while(<>)
{
if ( m/\(([\d\/\-]+)\)/ )
{
print $1;
print "\n";
}
}

Und dann:

$ ./extract.pl < file

- Moritz



Re: sed Problem die 2.

2005-09-06 Diskussionsfäden Juergen Salk
* Sven Gehr <[EMAIL PROTECTED]> [050906 09:56]:

> Ich muß eine Nummer aus folgendem String extrahieren:
> 
> 
> 381 470 M (@#  )[92 50 25  0]xS
> 573 470 M (0621/48293-91)[50 50 50 50 28 50 50 50 50 50 33 50  0]xS
> 1184 470 M ( #@)[25 50  0]xS
> 
> Die Nummer die ich daraus brauche ist die 0621/48293-91. [...]
>
> In Worte formuliert würde es lauten:
> 
> Nimm alle Zeichen zwischen (@#  ) und ( #@). Suche innerhalb dieses
^
Das da ist kein normales
Space-Zeichen sondern ein 
"Hard Space" (0xa0). Soll das 
wirklich so sein, oder ist das 
ein Lapsus deines Editors?

> Teilstrings nach einer Klammer (..). Der Inhalt in dieser Klammer
> ist die gesuchte Nummer im Rohformat die ich mit den sed Befehlen aus
> dem ersten Beispiel wieder aufbereiten kann.

Ich habe das erste Beispiel zwar nicht verfolgt, aber ich würde das
Problem in etwa so lösen:

 sed '/(@#  )/,/( #@)/s/.*(\([-/0-9]*\)).*/\1/;t;d' file

Dabei habe ich angenommen, dass der Hard Space in Wirklichkeit ein
normales Space darstellen soll und dass die gesuchten Nummern
nur Zahlen und die Zeichen "/" und "-" enthalten dürfen.

Beste Grüße - Jürgen  

-- 
GPG A997BA7A | 87FC DA31 5F00 C885 0DC3  E28F BD0D 4B33 A997 BA7A


signature.asc
Description: Digital signature


sed Problem die 2.

2005-09-06 Diskussionsfäden Sven Gehr
Hallo zusammen,

nachdem ihr mir beim letzten sed-Problem geholfen habt und alles soweit
funktioniert habe ich nun ein weiteres das ich mit dem Wissen des 1.
leider nicht alleine hin bekomme. Ich weiß nicht ob es mit sed überhaubt
funktioniert.

Ich muß eine Nummer aus folgendem String extrahieren:


381 470 M (@#  )[92 50 25  0]xS
573 470 M (0621/48293-91)[50 50 50 50 28 50 50 50 50 50 33 50  0]xS
1184 470 M ( #@)[25 50  0]xS

Die Nummer die ich daraus brauche ist die 0621/48293-91. Der gesamte
String ist natürlich lang und die gesuchte Nummer steht immer zwischen
dem (@#  ) ... und dem ... ( #@) Allerdings kommen zwischen den
Einleitung- und Ausleitungs- Zeilen noch verschiedene Zeichen die durch
PS-Treiber erzeugt werden. In Worte formuliert würde es lauten:

Nimm alle Zeichen zwischen (@#  ) und ( #@). Suche innerhalb dieses
Teilstrings nach einer Klammer (..). Der Inhalt in dieser Klammer
ist die gesuchte Nummer im Rohformat die ich mit den sed Befehlen aus
dem ersten Beispiel wieder aufbereiten kann.

Ist soetwas mit sed möglich?

Viele Grüße
Sven



Re: sed - Problem

2005-09-01 Diskussionsfäden David Haller
Hallo,

Am Thu, 01 Sep 2005, Sven Gehr schrieb:
>Am Mi 31.08.2005 15:27 schrieb Frank Küster <[EMAIL PROTECTED]>:
>> Michelle Konzack <[EMAIL PROTECTED]> wrote:
>> > Am 2005-08-31 12:55:18, schrieb Sven Gehr:
[..]
>also alles perfekt. Nun muß ich die zwei Schritte zu einem
>zusammenfassen und habe folgendes Skript erstellt:
>
>#!/bin/sh
>PS2ASCII=/usr/bin/ps2ascii
>FAXFILE=/usr/lib/cups/backend/out.ps
>FAXNUM=`($PS2ASCII $FAXFILE)|sed -e 's/[EMAIL PROTECTED]//' -e 's/[EMAIL 
>PROTECTED]//' -e 's/
 ^  ^ die subshell ist ueberfluessig.
>//g' -e 's/^+49/0/' -e 's/^+/00/' -e 's/\///g' -e 's/-//g'`
>echo $FAXNUM
>
>wenn ich dieses nun auf die gleiche Ausgangs-Datei (out.ps) anwende
>erhalte ich als Ausgabe:
>
>%%[ProductName:ESPGhostscript]%% @#06214829391 
>%%[Page:1]%% %%[LastPage]%%
>
>Ich finde absolut keinen Fehler. als kleiner Hinweis, dieses PS-File
>wurde von einem Windows-Druckertreiber erzeugt.

AHA!

Les bitte meine anderen Antworten (speziell die in suse-linux).

FAXNUM="`${PS2ASCII} \"$FAXFILE\" | tr '\r' '\n' | \
sed 's/^@@ *+/00/;s/[^0-9]\+//g;'`"

Das sollte so eigentlich funktionieren -- kann aber sein, dass das
mit dem Zeilenende ersetzen nicht gleich korrekt funktioniert, und
dass dann die Verankerung der '@@' nicht funktioniert. Achso, du
verwendest ja inzwichen @# und #@ (ueberfluessigerweise). Also ggfs.
mal folgendes testen:

FAXNUM="`${PS2ASCII} \"$FAXFILE\" | tr '\r' '\n' | \
sed 's/@# *+/00/;s/[^0-9]\+//g;'`"

Falls das zuviel erwischt, schau dir meine anderen Mails nochmal
genauer an. Spontan mit deinen geaenderten Anforderungen wuerde ich
auch noch folgendes probieren (ungetestet!):

FAXNUM="`${PS2ASCII} \"$FAXFILE\" | tr '\r' '\n' | \
sed '/@#.*#@/ {
s/.*\(@[EMAIL PROTECTED]).*/\1/;
s/[EMAIL PROTECTED] *+/00/;
s/[^0-9]\+//g;
}'`"

Hm. Wie sieht das PS denn konkret aus? Kannst du da mal ein Beispiel der
relevanten Stelle mailen? Ich denke, das PS2ASCII ist ueberfluessig und
die Nummer laesst sich direkt aus dem PS rauslesen.

BTW: awk waere speziell dann ueberlegenswert (ungetestet!):

FAXNUM="`awk '
BEGIN {
RS="[\r\n]"; ## nimmt \r und \n und \r\n als Zeileumbruch, aber
 ## ungetestet, ersetzt also das 'tr'.
}
/@#.*#@/ {
$0 = gensub(/[EMAIL PROTECTED](.*)[EMAIL PROTECTED]/, "\\1", 0);
sub(/^ *\+ */, "00", $0);
print gensub(/[^0-9]/, "", "g");
}' \"$FAXFILE\"`"

HTH,
-dnh

-- 
Treat your password like your toothbrush. Don't let anybody else
use it, and get a new one every six months.  -- Clifford Stoll
 [found in ssl_engine_pphrase.c]


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)



Re: sed - Problem

2005-09-01 Diskussionsfäden Sven Gehr
Am Do 01.09.2005 11:06 schrieb Michelle Konzack
<[EMAIL PROTECTED]>:
> Am 2005-09-01 10:03:02, schrieb Sven Gehr:


>
> > also alles perfekt. Nun muß ich die zwei Schritte zu einem
> > zusammenfassen und habe folgendes Skript erstellt:
> >
> > #!/bin/sh
> > PS2ASCII=/usr/bin/ps2ascii
> > FAXFILE=/usr/lib/cups/backend/out.ps
> > FAXNUM=`($PS2ASCII $FAXFILE)|sed -e 's/[EMAIL PROTECTED]//' -e 's/[EMAIL 
> > PROTECTED]//' -e 's/
> 
>
> FAXNUM=`$PS2ASCII $FAXFILE |sed -e 's/[EMAIL PROTECTED]//' -e 's/[EMAIL 
> PROTECTED]//' -e 's/
> ^^^
> > //g' -e 's/^+49/0/' -e 's/^+/00/' -e 'sg' -e 's/-//g'`
> > echo $FAXNUM

hat leider nichts gebracht. Nochimmer die gleiche, falsche Ausgabe:


@# 06214829391 #@ Hallo Fax, ich bin's der Faxmeister.

^L%%[Page: 1]%%
%%[LastPage]%%
-




Re: sed - Problem

2005-09-01 Diskussionsfäden Michelle Konzack
Am 2005-09-01 10:03:02, schrieb Sven Gehr:

> also alles perfekt. Nun muß ich die zwei Schritte zu einem
> zusammenfassen und habe folgendes Skript erstellt:
> 
> #!/bin/sh
> PS2ASCII=/usr/bin/ps2ascii
> FAXFILE=/usr/lib/cups/backend/out.ps
> FAXNUM=`($PS2ASCII $FAXFILE)|sed -e 's/[EMAIL PROTECTED]//' -e 's/[EMAIL 
> PROTECTED]//' -e 's/
  

FAXNUM=`$PS2ASCII $FAXFILE |sed -e 's/[EMAIL PROTECTED]//' -e 's/[EMAIL 
PROTECTED]//' -e 's/
^^^
> //g' -e 's/^+49/0/' -e 's/^+/00/' -e 's/\///g' -e 's/-//g'`
> echo $FAXNUM

> Viele Grüße
> Sven

Greetings
Michelle

-- 
Linux-User #280138 with the Linux Counter, http://counter.li.org/
Michelle Konzack   Apt. 917  ICQ #328449886
   50, rue de Soultz MSM LinuxMichi
0033/3/8845235667100 Strasbourg/France   IRC #Debian (irc.icq.com)


signature.pgp
Description: Digital signature


Re: sed - Problem

2005-09-01 Diskussionsfäden Sven Gehr
Am Mi 31.08.2005 15:27 schrieb Frank Küster <[EMAIL PROTECTED]>:
> Michelle Konzack <[EMAIL PROTECTED]> wrote:
> > Am 2005-08-31 12:55:18, schrieb Sven Gehr:

Hallo zusammen,

bin auf ein weiteres Problem mit meinem Skript (sed) gestoßen welches
absolut komisch ist, zumindest für mich.

Ausgangsmaterial ist eine Postscript-Datei. Wenn ich diese mit:

ps2ascii out.ps out.txt

in ASCII konvertieren enthält diese:

-
@# 06214829391 #@ Hallo Fax, ich bin's der Faxmeister.

^L%%[Page: 1]%%
%%[LastPage]%%
-

wenn ich anschliesend mein Skript:

#!/bin/sh
# txt2number
PS2ASCII=/usr/bin/ps2ascii
TEMPFILE=/usr/lib/cups/backend/out.txt
FAXFILECONTEND=$(cat $TEMPFILE)
FAXNUM=`echo $FAXFILECONTEND|sed -e 's/[EMAIL PROTECTED]//' -e 's/[EMAIL 
PROTECTED]//' -e 's/
//g' -e 's/^+49/0/' -e 's/^+/00/' -e 's/\///g' -e 's/-//g'`
echo $FAXNUM


darauf anwende erhalte ich die Ausgabe:

06214829391

also alles perfekt. Nun muß ich die zwei Schritte zu einem
zusammenfassen und habe folgendes Skript erstellt:

#!/bin/sh
PS2ASCII=/usr/bin/ps2ascii
FAXFILE=/usr/lib/cups/backend/out.ps
FAXNUM=`($PS2ASCII $FAXFILE)|sed -e 's/[EMAIL PROTECTED]//' -e 's/[EMAIL 
PROTECTED]//' -e 's/
//g' -e 's/^+49/0/' -e 's/^+/00/' -e 's/\///g' -e 's/-//g'`
echo $FAXNUM


wenn ich dieses nun auf die gleiche Ausgangs-Datei (out.ps) anwende
erhalte ich als Ausgabe:

%%[ProductName:ESPGhostscript]%% @#06214829391 
%%[Page:1]%% %%[LastPage]%%

Ich finde absolut keinen Fehler. als kleiner Hinweis, dieses PS-File
wurde von einem Windows-Druckertreiber erzeugt. Wenn ich das PS-File vom
Linux-Druckertreiber erzeugen lasse funktioniert auch das 2. Skript was
die Nummer extrahiert. Ich versteh's einfach nicht.

Viele Grüße
Sven



Re: sed - Problem

2005-08-31 Diskussionsfäden David Haller
Hallo,

Am Wed, 31 Aug 2005, Michelle Konzack schrieb:
>Am 2005-08-31 11:52:03, schrieb Mario 'BitKoenig' Holbe:
>> Michelle Konzack <[EMAIL PROTECTED]> wrote:
>> > Am 2005-08-31 11:23:33, schrieb Christian Frommeyer:
>> >> sed -r -e 's/.*@@([EMAIL PROTECTED])@@.*/\1/g' -e 's/\s*+/00/' -e 
>> >> 's/[^0-9]//g'
>> > Das ist aber nicht gut...
>> > Besser:
>> > sed -r -e 's/.*@@([EMAIL PROTECTED])@@.*/\1/g;s/\s*+/00/;s/[^0-9]//g'

Ist '-r' portabel?

$ zgrep -- '\-r' `man -w sed`
and the bug-reporting address,
After the address (or address-range),
executed if the address (or address-range) does

>> Rein interessehalber... Warum ist das nicht gut? Gibts da irgendwelche
>> Unterschiede zwischen beiden Varianten?
>
>"-e" spannt jedesmal einen neune einen editor

Was?

>Du kannst aber alle aktionen Zeile für Zeile in eine Datei schreiben
>und "sed" mit
>
>sed --script-file 

$ sed --script-file /dev/null
sed: unrecognized option `--script-file'
[...]

'sed -f' oder bei GNU-sed: 'sed --file'

Es geht uebrigens auch:

,[ delemptylines ]
| #!/usr/bin/sed -f
| /^[[:space:]]*$/d
`

Noch nen 'chmod u+x' hinterher und feddich. Praktisch hinter einem
'cpp' (oder 'gcc -E') ohne '-o'.

$ echo -e '#include \nUTS_RELEASE\n' \
| gcc -E - | delemptylines

>aufrufen und sed arbeitet dann eine Zeile nach der anderen ab.
>Auf der Commandline, wird das dann so angegeben wie ich es gemacht habe,
>also
>
>-e "first;second;third;..."
>
>jede Aktion also mit ";" getrennt.

Oder durch einen Zeilenumbruch. Genau wie in einem sed-script.

$ seq 1 9 | sed -n '1 {
s/1/X/
p
}
5p'
X
5

HTH & HAND,
-dnh

-- 
When I woke up this morning, the cat was barfing on me.  Things have
gone downhill since then. -- Michel Buijsman


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)



Re: sed - Problem

2005-08-31 Diskussionsfäden Frank Küster
Michelle Konzack <[EMAIL PROTECTED]> wrote:

> Am 2005-08-31 12:55:18, schrieb Sven Gehr:
>
>> Nun wollte ich das Ganze in ein Skript einbauen und habe so meine
>> Probleme damit.
>> 
>> #!/bin/sh
>> FAXFILE=/usr/lib/cups/backend/doc155.txt
>> FAXNUME=$FAXFILE|sed -e 's/[EMAIL PROTECTED]//' -e 's/[EMAIL PROTECTED]//' 
>> -e 's/ //g' -e
>> 's/^+49/0/' -e 's/^+/00/' -e 's/\///g' -e 's/-//g'
>> echo $FAXNUM
>
> Probiers mal mit:
>
> FAXNUME=`cat $FAXFILE |sed -e 's/[EMAIL PROTECTED]//' -e 's/[EMAIL 
> PROTECTED]//' -e 's/ //g' -e 's/^+49/0/' -e 's/^+/00/' -e 's/\///g' -e 
> 's/-//g'`

Useless use of cat

sed -e ' ... ' $FAXFILE

Und wenn man mal ein Kommando hat, dass seine Eingaben nur von stdin
annimmt und nicht aus einer Datei lesen kann, ist

commando --parameter ... < $FAXFILE

immer noch besser.

Gruß, Frank
-- 
Frank Küster
Inst. f. Biochemie der Univ. Zürich
Debian Developer



Re: sed - Problem

2005-08-31 Diskussionsfäden Andreas Pakulat
On 31.Aug 2005 - 14:18:00, Michelle Konzack wrote:
> Am 2005-08-31 12:55:18, schrieb Sven Gehr:
> 
> > Nun wollte ich das Ganze in ein Skript einbauen und habe so meine
> > Probleme damit.
> > 
> > #!/bin/sh
> > FAXFILE=/usr/lib/cups/backend/doc155.txt
> > FAXNUME=$FAXFILE|sed -e 's/[EMAIL PROTECTED]//' -e 's/[EMAIL PROTECTED]//' 
> > -e 's/ //g' -e
> > 's/^+49/0/' -e 's/^+/00/' -e 's/\///g' -e 's/-//g'
> > echo $FAXNUM
> 
> Probiers mal mit:
> 
> FAXNUME=`cat $FAXFILE |sed -e 's/[EMAIL PROTECTED]//' -e 's/[EMAIL 
> PROTECTED]//' -e 's/ //g' -e 's/^+49/0/' -e 's/^+/00/' -e 's/\///g' -e 
> 's/-//g'`

Michelle, das haette ich von dir nicht erwartet - useless use of cat, 

sed ... < $FAXFILE 

oder 

sed ... $FAXFILE

funktioniert ebenso und beansprucht einen Prozess weniger.

Andreas

-- 
You are wise, witty, and wonderful, but you spend too much time reading
this sort of trash.


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)



Re: sed - Problem

2005-08-31 Diskussionsfäden Michelle Konzack
Am 2005-08-31 12:55:18, schrieb Sven Gehr:

> Nun wollte ich das Ganze in ein Skript einbauen und habe so meine
> Probleme damit.
> 
> #!/bin/sh
> FAXFILE=/usr/lib/cups/backend/doc155.txt
> FAXNUME=$FAXFILE|sed -e 's/[EMAIL PROTECTED]//' -e 's/[EMAIL PROTECTED]//' -e 
> 's/ //g' -e
> 's/^+49/0/' -e 's/^+/00/' -e 's/\///g' -e 's/-//g'
> echo $FAXNUM

Probiers mal mit:

FAXNUME=`cat $FAXFILE |sed -e 's/[EMAIL PROTECTED]//' -e 's/[EMAIL 
PROTECTED]//' -e 's/ //g' -e 's/^+49/0/' -e 's/^+/00/' -e 's/\///g' -e 's/-//g'`


Greetings
Michelle

-- 
Linux-User #280138 with the Linux Counter, http://counter.li.org/
Michelle Konzack   Apt. 917  ICQ #328449886
   50, rue de Soultz MSM LinuxMichi
0033/3/8845235667100 Strasbourg/France   IRC #Debian (irc.icq.com)


signature.pgp
Description: Digital signature


Re: sed - Problem

2005-08-31 Diskussionsfäden Sven Gehr
Am Mi 31.08.2005 12:55 schrieb Sven Gehr <[EMAIL PROTECTED]>:

Hallo,

[...]
> Nun wollte ich das Ganze in ein Skript einbauen und habe so meine
> Probleme damit.
>
>
> #!/bin/sh
> FAXFILE=/usr/lib/cups/backend/doc155.txt
> FAXNUME=$FAXFILE|sed -e 's/[EMAIL PROTECTED]//' -e 's/[EMAIL PROTECTED]//' -e 
> 's/ //g' -e
> 's/^+49/0/' -e 's/^+/00/' -e 'sg' -e 's/-//g'
> echo $FAXNUM
>
> In der Datei doc155.txt steht genau die Zeichenkette drin wie ich sie
> die ganze Zeit mit echo... übergeben habe. Wenn ich das Skript
> ausführe
> wird jedoch nichts ausgegeben. Wie muß ich das zuweisen?

hab's heraus gefunden.

Viele Grüße
Sven





Re: sed - Problem

2005-08-31 Diskussionsfäden Sven Gehr
Am Mi 31.08.2005 11:26 schrieb Michelle Konzack
<[EMAIL PROTECTED]>:
> Am 2005-08-31 09:41:13, schrieb Sven Gehr:

Vielen Dank für die Vorschläge. In der zwischenzeit habe ich viel mit
sed herum probiert und habe noch einiges geändert. Die Zeichen die den
Anfang und das Ende markieren kann ich ja selbst steuern da diese durch
die Aplikation in das File geschrieben werden. Ich hielt es für besser
wenn ich für Anfang und Ende nicht die gleichen nehme sonder
unterschiedliche:

@#   -> markiert den Anfang
# @  -> markiert das Ende

Mit:

echo "bla bla @# +49 621 / 4829-399 #@ bla bla" |sed -e 's/[EMAIL PROTECTED]//' 
-e
's/[EMAIL PROTECTED]//' -e 's/ //g' -e 's/^+49/0/' -e 's/^+/00/' -e 's/\///g' -e
's/-//g'

erhalte ich dann:

06214829399

Das einzigste was bei der Lösung nicht funktioniert ist eine Prüfung auf
weiter Sonderzeichen, Buchstaben etc. Das wäre jedoch in anbetracht des
Verwendungszwecks nicht tragisch. Bei den Zahlen handelt es sich, wie
sich der ein oder andere bestimmt schon gedacht hat, um Faxnummern.
Diese werden aus unsere Datenbank eingemischt. Wenn da Buchstaben oder
Sondernzeichen enthalten sind stimmt die Nummer ja ohnehin nicht und
braucht auch nicht weiter verarbeitet zu werden.

Nun wollte ich das Ganze in ein Skript einbauen und habe so meine
Probleme damit.


#!/bin/sh
FAXFILE=/usr/lib/cups/backend/doc155.txt
FAXNUME=$FAXFILE|sed -e 's/[EMAIL PROTECTED]//' -e 's/[EMAIL PROTECTED]//' -e 
's/ //g' -e
's/^+49/0/' -e 's/^+/00/' -e 's/\///g' -e 's/-//g'
echo $FAXNUM

In der Datei doc155.txt steht genau die Zeichenkette drin wie ich sie
die ganze Zeit mit echo... übergeben habe. Wenn ich das Skript ausführe
wird jedoch nichts ausgegeben. Wie muß ich das zuweisen?

Viele Grüße
Sven



Re: sed - Problem

2005-08-31 Diskussionsfäden Michelle Konzack
Am 2005-08-31 11:52:03, schrieb Mario 'BitKoenig' Holbe:
> Michelle Konzack <[EMAIL PROTECTED]> wrote:
> > Am 2005-08-31 11:23:33, schrieb Christian Frommeyer:
> >> sed -r -e 's/.*@@([EMAIL PROTECTED])@@.*/\1/g' -e 's/\s*+/00/' -e 
> >> 's/[^0-9]//g'
> > Das ist aber nicht gut...
> > Besser:
> > sed -r -e 's/.*@@([EMAIL PROTECTED])@@.*/\1/g;s/\s*+/00/;s/[^0-9]//g'
> 
> Rein interessehalber... Warum ist das nicht gut? Gibts da irgendwelche
> Unterschiede zwischen beiden Varianten?

"-e" spannt jedesmal einen neune einen editor

Du kannst aber alle aktionen Zeile für Zeile in eine Datei schreiben
und "sed" mit

sed --script-file 

aufrufen und sed arbeitet dann eine Zeile nach der anderen ab.
Auf der Commandline, wird das dann so angegeben wie ich es gemacht habe,
also

-e "first;second;third;..."

jede Aktion also mit ";" getrennt.

> regards
>Mario

Greetings
Michelle

-- 
Linux-User #280138 with the Linux Counter, http://counter.li.org/
Michelle Konzack   Apt. 917  ICQ #328449886
   50, rue de Soultz MSM LinuxMichi
0033/3/8845235667100 Strasbourg/France   IRC #Debian (irc.icq.com)


signature.pgp
Description: Digital signature


Re: sed - Problem

2005-08-31 Diskussionsfäden Gebhard Dettmar
On Wednesday 31 August 2005 09:41, Sven Gehr wrote:
> Hallo zusammen,
>
> ich habe ein Problem mit sed. Die Problemstellung ist wie folgt:
>
> In einem Textfile stehen an einer nicht exakt definierten Position ein
> String der mit @@ beginnt und mit @@ endet. Der Teil der zwischen diesen
> @@'s steht soll extrahiert werden und unformatiert werden. Beim
> umfarmatieren sollen folgende Regeln angewendet werden:
>
> 1.) Ein führendes + Zeichen soll durch 00 ersetzt werden. Das soll
> lediglich mit einem + Zeichen passieren das ganz am Anfang steht. Tauch
> dieses Zeichen innerhalb des Strings nocheinmal auf wird es wie ein
> Sonderzeichen behandelt und entfernt (siehe unten). Zu beachten ist. Das
> zwichem dem + und den @@-Zeichen die den Anfang markieren durchaus ein
> Leerzeichen stehen kann. Die Zeichenkette kann also wie folgt beginnen:
>
> @@+
> @@ +
Das macht z.B. 
sed -e 's/\([^,]*\)+/\100/' sedtest spuckt aus:
@@00
@@ 00
[^,] soll heißen: alles außer einem Komma, also z.B. @
In dem Stil kannst du dann weiter machen
Eilige Grüße geb

>
> Viele Grüße
> Sven


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)



Re: sed - Problem

2005-08-31 Diskussionsfäden Mario 'BitKoenig' Holbe
Michelle Konzack <[EMAIL PROTECTED]> wrote:
> Am 2005-08-31 11:23:33, schrieb Christian Frommeyer:
>> sed -r -e 's/.*@@([EMAIL PROTECTED])@@.*/\1/g' -e 's/\s*+/00/' -e 
>> 's/[^0-9]//g'
> Das ist aber nicht gut...
> Besser:
> sed -r -e 's/.*@@([EMAIL PROTECTED])@@.*/\1/g;s/\s*+/00/;s/[^0-9]//g'

Rein interessehalber... Warum ist das nicht gut? Gibts da irgendwelche
Unterschiede zwischen beiden Varianten?


regards
   Mario
-- 
Uebrigens... Wer frueher stirbt ist laenger tot!


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)



Re: sed - Problem

2005-08-31 Diskussionsfäden Michelle Konzack
Am 2005-08-31 11:23:33, schrieb Christian Frommeyer:

> Also wenn nichts gegen mehrere Ausdrücke spricht probier doch mal:
> 
> 's/.*@@([EMAIL PROTECTED])@@.*/\1/g'
> 's/\s*+/00/'
> 's/[^0-9]//g'
> 
> also z.B. mit
> 
> sed -r -e 's/.*@@([EMAIL PROTECTED])@@.*/\1/g' -e 's/\s*+/00/' -e 
> 's/[^0-9]//g'

Das ist aber nicht gut...
Besser:

sed -r -e 's/.*@@([EMAIL PROTECTED])@@.*/\1/g;s/\s*+/00/;s/[^0-9]//g'

Greetings
Michelle

-- 
Linux-User #280138 with the Linux Counter, http://counter.li.org/
Michelle Konzack   Apt. 917  ICQ #328449886
   50, rue de Soultz MSM LinuxMichi
0033/3/8845235667100 Strasbourg/France   IRC #Debian (irc.icq.com)


signature.pgp
Description: Digital signature


Re: sed - Problem

2005-08-31 Diskussionsfäden Michelle Konzack
Am 2005-08-31 09:41:13, schrieb Sven Gehr:
> Hallo zusammen,
> 
> ich habe ein Problem mit sed. Die Problemstellung ist wie folgt:



> sed -r
> 's/@@\s*?\+([0-9]+)\s*?([0-9]+)[^0-9]*?([0-9]+)\/?([0-9]+)?@@/00\1\2\3\4/g'

> Mache ich ein:
> 
> echo @@+49621 4829/399@@bla bla bla|sed . erhalte ich:
> 
> 00496214829399bla bla bla

> Kenn sich jemand mit sed aus und kann mir sagen wo mein Fehler ist?

wie währe es mit:

echo "@@+49621 4829/399@@bla bla bla" |sed  -r 
's/@@\s*?\+([0-9]+)\s*?([0-9]+)[^0-9]*?([0-9]+)\/?([0-9]+)?@@.*/00\1\2\3\4/g'

Da kriegste dann

00496214829399

> Viele Grüße
> Sven

Greetings
Michelle

-- 
Linux-User #280138 with the Linux Counter, http://counter.li.org/
Michelle Konzack   Apt. 917  ICQ #328449886
   50, rue de Soultz MSM LinuxMichi
0033/3/8845235667100 Strasbourg/France   IRC #Debian (irc.icq.com)


signature.pgp
Description: Digital signature


Re: sed - Problem

2005-08-31 Diskussionsfäden Christian Frommeyer
Am Mittwoch 31 August 2005 09:41 schrieb Sven Gehr:

[sed-Wunsch]

> echo @@+49621 4829/399@@bla bla bla|sed . erhalte ich:
> 00496214829399bla bla bla

Also wenn nichts gegen mehrere Ausdrücke spricht probier doch mal:

's/.*@@([EMAIL PROTECTED])@@.*/\1/g'
's/\s*+/00/'
's/[^0-9]//g'

also z.B. mit

sed -r -e 's/.*@@([EMAIL PROTECTED])@@.*/\1/g' -e 's/\s*+/00/' -e 's/[^0-9]//g'

Das tut hier.

Gruß Chris

-- 
A: because it distrupts the normal process of thought
Q: why is top posting frowned upon



Re: sed - Problem

2005-08-31 Diskussionsfäden Frank Küster
Sven Gehr <[EMAIL PROTECTED]> wrote:

> 2.) Nachdem ein evtl. vorhandenes + Zeichen am Anfang umgesetzt ist
> sollen alle Zeichen die keine Zahl sind (Leerzeichen, /, - etc.)
> entfernt werden.
>
> Ich bin nicht unbedingt der sed-Profi. Was ich bisher hinbekommen habe
> ist:
>
> sed -r
> 's/@@\s*?\+([0-9]+)\s*?([0-9]+)[^0-9]*?([0-9]+)\/?([0-9]+)?@@/00\1\2\3\4/g'
>
> Diese Syntax enthält jedoch noch Fehler und ich bekomm's einfach nicht
> hin. Das mit @@ gekennzeichnete Ende wird nicht erkannt:
>
> Mache ich ein:
>
> echo @@+49621 4829/399@@bla bla bla|sed . erhalte ich:
>
> 00496214829399bla bla bla

Hilft dir

echo etwas davor @@+49621 4829/399@@bla bla bla|sed 's/.*\(@@.*@@\).*/\1/g'

weiter? Für das Löschen der Sonderzeichen würde ich nicht sed, sondern
tr nehmen.

Gruß, Frank

-- 
Frank Küster
Inst. f. Biochemie der Univ. Zürich
Debian Developer



sed - Problem

2005-08-31 Diskussionsfäden Sven Gehr
Hallo zusammen,

ich habe ein Problem mit sed. Die Problemstellung ist wie folgt:

In einem Textfile stehen an einer nicht exakt definierten Position ein
String der mit @@ beginnt und mit @@ endet. Der Teil der zwischen diesen
@@'s steht soll extrahiert werden und unformatiert werden. Beim
umfarmatieren sollen folgende Regeln angewendet werden:

1.) Ein führendes + Zeichen soll durch 00 ersetzt werden. Das soll
lediglich mit einem + Zeichen passieren das ganz am Anfang steht. Tauch
dieses Zeichen innerhalb des Strings nocheinmal auf wird es wie ein
Sonderzeichen behandelt und entfernt (siehe unten). Zu beachten ist. Das
zwichem dem + und den @@-Zeichen die den Anfang markieren durchaus ein
Leerzeichen stehen kann. Die Zeichenkette kann also wie folgt beginnen:

@@+
@@ +

2.) Nachdem ein evtl. vorhandenes + Zeichen am Anfang umgesetzt ist
sollen alle Zeichen die keine Zahl sind (Leerzeichen, /, - etc.)
entfernt werden.

Ich bin nicht unbedingt der sed-Profi. Was ich bisher hinbekommen habe
ist:

sed -r
's/@@\s*?\+([0-9]+)\s*?([0-9]+)[^0-9]*?([0-9]+)\/?([0-9]+)?@@/00\1\2\3\4/g'

Diese Syntax enthält jedoch noch Fehler und ich bekomm's einfach nicht
hin. Das mit @@ gekennzeichnete Ende wird nicht erkannt:

Mache ich ein:

echo @@+49621 4829/399@@bla bla bla|sed . erhalte ich:

00496214829399bla bla bla

Selbst wenn ich hinter der 2. @@-Kette keine Zeichen mehr übergebe ibt
es Varianten die nicht funktionieren:

@@+49621/4829-399@@  ->  @@+49621/4829-399@@
@@+49621/4829 399@@  ->  @@+49621/4829 399@@

Kenn sich jemand mit sed aus und kann mir sagen wo mein Fehler ist?

Viele Grüße
Sven



Re: sed problem

2002-12-19 Diskussionsfäden Michelle Konzack
Hallo Andre,

Am 21:46 2002-12-17 +0100 hat Andre Fischer geschrieben:
>
>hallöchen,
>ich glaub mein sed kann nicht mehr zählen :(
>
>ich möchte die Zahlenfolge "12345" durch "PLZ" ersetzen und habe folgenden
>Test gemacht:
>echo "test 12345 test" | sed s/[0-9]\{5\}/PLZ/g
>
>und habe folgendes Ergebnis erwartet: "test PLZ test" leider kommt 
"test 12345
>test" - was mach ich da falsch?

Die beispiele im Buch basieren soviel ich weis auf /bin/tcsh.

Wenn du /bin/bash verwendest, must Du den String in Hochkommas setzen,
also:

echo "test 12345 test" | sed 's/[0-9]\{5\}/PLZ/g'
 ^  ^
 hierund hier

>tschau fisch

Bis ein anderes mal
Michelle


--
Häufig gestellte Fragen und Antworten (FAQ):
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)



Re: sed problem

2002-12-17 Diskussionsfäden Andre Fischer
Am Dienstag, 17. Dezember 2002 22:50 schrieb [EMAIL PROTECTED]:
> Andre Fischer schrieb:
> > ich möchte die Zahlenfolge "12345" durch "PLZ" ersetzen und habe
> > folgenden Test gemacht:
> > echo "test 12345 test" | sed s/[0-9]\{5\}/PLZ/g
> >
> > und habe folgendes Ergebnis erwartet: "test PLZ test" leider kommt "test
> > 12345 test" - was mach ich da falsch?
>
>   $ echo "test 12345 test" | sed s/[0-9]\{5\}/PLZ/g
>   test 12345 test
>   $ echo "test 12345 test" | sed 's/[0-9]\{5\}/PLZ/g'
>   test PLZ test
>
> Vor dem sed hängt noch die bash, vermute ich.
>
> Nebenbei: um der bash ein TAB für (z.B.) sed mitzuteilen, hilft
> "Strg-v TABTaste".
>
> Durch fehlende '' und ggf. der TAB-Geschichte kann man sich eine ganze
> Weile ergebnislos mit dem sed amüsieren.


danke das wars, nicht sed sondern bash warn schuld :)

tschau fisch


--
Häufig gestellte Fragen und Antworten (FAQ):
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)




Re: sed problem

2002-12-17 Diskussionsfäden Andreas Wodrich
Andreas Wodrich wrote:

fisch wrote:


Am Dienstag, 17. Dezember 2002 22:08 schrieb Wolfgang Erig:


On Tue, Dec 17, 2002 at 09:46:30PM +0100, Andre Fischer wrote:


ich glaub mein sed kann nicht mehr zählen :(

ich möchte die Zahlenfolge "12345" durch "PLZ" ersetzen und habe
folgenden Test gemacht:
echo "test 12345 test" | sed s/[0-9]\{5\}/PLZ/g



wenn ich mich recht erinnere, kann sed nicht den
Multiplikator, er kann hier wirklich nicht zählen :)
Bei mir geht
echo "test 12345 test" | sed s/[0-9][0-9][0-9][0-9][0-9]/PLZ/g




laut "Linux in a Nutshell" solls aber gehn :(

ich brauche letztendlich folgendes:

"irgendwas TRENNZEICHEN12345 irgendwas anderesTRENNZEICHEN" 
->"irgendwas TRENNZEICHEN12345TRENNZEICHENirgendwas anderesTRENNZEICHEN"

wobei hier 12345 für eine PLZ steht und das ganze auf eine Textdatei 
angewendet werden muß

Wolfgang





Soweit ich es aus der Docu zu sed herauslese, kann s/../../ nicht als 
Parameter uebergeben werden.
Ich hatte leider nicht weit genug gelesen:
man sed:
...
If no -e,-f,--expression, or --file options are given on  the  command-
line,  then  the first non-option argument on the command line is taken 
to be the script to be executed.
...
Aber das script unten funktioniert (;-).

Es muss eine Datei angelegt werden, in der dieser Befehl abgelegt wird.
z.B
vi sedscript
eine Zeile mit
s/[0-9]\{5\}/PLZ/g
einfuegen, abspeichern.
echo "test 12345 test" | sed -f sedscript
liefert:
test PLZ test

Gruss

Andreas







--
Häufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)



Re: sed problem

2002-12-17 Diskussionsfäden Andreas Wodrich
fisch wrote:

Am Dienstag, 17. Dezember 2002 22:08 schrieb Wolfgang Erig:


On Tue, Dec 17, 2002 at 09:46:30PM +0100, Andre Fischer wrote:


ich glaub mein sed kann nicht mehr zählen :(

ich möchte die Zahlenfolge "12345" durch "PLZ" ersetzen und habe
folgenden Test gemacht:
echo "test 12345 test" | sed s/[0-9]\{5\}/PLZ/g


wenn ich mich recht erinnere, kann sed nicht den
Multiplikator, er kann hier wirklich nicht zählen :)
Bei mir geht
echo "test 12345 test" | sed s/[0-9][0-9][0-9][0-9][0-9]/PLZ/g



laut "Linux in a Nutshell" solls aber gehn :(

ich brauche letztendlich folgendes:

"irgendwas TRENNZEICHEN12345 irgendwas anderesTRENNZEICHEN" ->"irgendwas 
TRENNZEICHEN12345TRENNZEICHENirgendwas anderesTRENNZEICHEN"

wobei hier 12345 für eine PLZ steht und das ganze auf eine Textdatei 
angewendet werden muß 


		Wolfgang




Soweit ich es aus der Docu zu sed herauslese, kann s/../../ nicht als 
Parameter uebergeben werden.

Es muss eine Datei angelegt werden, in der dieser Befehl abgelegt wird.
z.B
vi sedscript
eine Zeile mit
s/[0-9]\{5\}/PLZ/g
einfuegen, abspeichern.
echo "test 12345 test" | sed -f sedscript
liefert:
test PLZ test

Gruss

Andreas


--
Häufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)



Re: sed problem

2002-12-17 Diskussionsfäden Wolfgang Erig
On Tue, Dec 17, 2002 at 10:15:11PM +0100, fisch wrote:
> > > echo "test 12345 test" | sed s/[0-9]\{5\}/PLZ/g
> >
> > wenn ich mich recht erinnere, kann sed nicht den
> > Multiplikator, er kann hier wirklich nicht zählen :)
> 
> laut "Linux in a Nutshell" solls aber gehn :(
hmm, man soll "man ed" für die reg-Expr. des "sed" machen.
Der "ed" kann demnach die Zähler, aber "ed" kann mehr als "sed".
Wahrscheinlich gehören die Zähler zu den Unterschieden!?
und der Autor hat bei "ed" abgeschrieben.
> 
> ich brauche letztendlich folgendes:
> 
> "irgendwas TRENNZEICHEN12345 irgendwas anderesTRENNZEICHEN" ->"irgendwas 
> TRENNZEICHEN12345TRENNZEICHENirgendwas anderesTRENNZEICHEN"
> 
> wobei hier 12345 für eine PLZ steht und das ganze auf eine Textdatei 
> angewendet werden muß 
> 
Bin mir unsicher, ob ich Deine Anfordeung richtig verstanden habe,
aber probier mal
echo "irgendwas TRENNZEICHEN12345 irgendwas anderesTRENNZEICHEN" |
sed 's/\(TRENNZEICHEN\)\([0-9][0-9][0-9][0-9][0-9]\) /\
\1\2\1/'


-- 
Häufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)




Re: sed problem

2002-12-17 Diskussionsfäden Harald Weidner
Hallo,

Andre Fischer <[EMAIL PROTECTED]>:

>echo "test 12345 test" | sed s/[0-9]\{5\}/PLZ/g
>und habe folgendes Ergebnis erwartet: "test PLZ test" leider kommt
>"test 12345 test" - was mach ich da falsch?

Deine Shell verschluckt die Backslashes. Probiere es mal mit

   echo "test 12345 test" | sed 's/[0-9]\{5\}/PLZ/g'

Gruß, Harald

-- 
Harald Weidner   [EMAIL PROTECTED]


-- 
Häufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)




Re: sed problem

2002-12-17 Diskussionsfäden fisch
Am Dienstag, 17. Dezember 2002 22:08 schrieb Wolfgang Erig:
> On Tue, Dec 17, 2002 at 09:46:30PM +0100, Andre Fischer wrote:
> > ich glaub mein sed kann nicht mehr zählen :(
> >
> > ich möchte die Zahlenfolge "12345" durch "PLZ" ersetzen und habe
> > folgenden Test gemacht:
> > echo "test 12345 test" | sed s/[0-9]\{5\}/PLZ/g
>
> wenn ich mich recht erinnere, kann sed nicht den
> Multiplikator, er kann hier wirklich nicht zählen :)
> Bei mir geht
> echo "test 12345 test" | sed s/[0-9][0-9][0-9][0-9][0-9]/PLZ/g

laut "Linux in a Nutshell" solls aber gehn :(

ich brauche letztendlich folgendes:

"irgendwas TRENNZEICHEN12345 irgendwas anderesTRENNZEICHEN" ->"irgendwas 
TRENNZEICHEN12345TRENNZEICHENirgendwas anderesTRENNZEICHEN"

wobei hier 12345 für eine PLZ steht und das ganze auf eine Textdatei 
angewendet werden muß 

>
>   Wolfgang


--
Häufig gestellte Fragen und Antworten (FAQ):
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)




Re: sed problem

2002-12-17 Diskussionsfäden Wolfgang Erig
On Tue, Dec 17, 2002 at 09:46:30PM +0100, Andre Fischer wrote:
> ich glaub mein sed kann nicht mehr zählen :(
> 
> ich möchte die Zahlenfolge "12345" durch "PLZ" ersetzen und habe folgenden 
> Test gemacht:
> echo "test 12345 test" | sed s/[0-9]\{5\}/PLZ/g
wenn ich mich recht erinnere, kann sed nicht den
Multiplikator, er kann hier wirklich nicht zählen :)
Bei mir geht
echo "test 12345 test" | sed s/[0-9][0-9][0-9][0-9][0-9]/PLZ/g

Wolfgang


-- 
Häufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)




sed problem

2002-12-17 Diskussionsfäden Andre Fischer
hallöchen,
ich glaub mein sed kann nicht mehr zählen :(

ich möchte die Zahlenfolge "12345" durch "PLZ" ersetzen und habe folgenden 
Test gemacht:
echo "test 12345 test" | sed s/[0-9]\{5\}/PLZ/g

und habe folgendes Ergebnis erwartet: "test PLZ test" leider kommt "test 12345 
test" - was mach ich da falsch?

tschau fisch


--
Häufig gestellte Fragen und Antworten (FAQ):
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)