Re: Zeilen numerieren

2005-10-20 Diskussionsfäden Roland M. Kruggel
  l=1; cat ascii-date | while read line; do
  echo $line | sed -e s/#[0-9]*$/$l/g; l=$((l+1));
  done

 Sowas in der Richtung wäre auch meine erste Idee gewesen. Wenn
 line jedoch mehrere aufeinander folgende Freizeichen enthält,
 werden diese als Whitespace geschluckt und zu einem Freizeichen
 reduziert. Auch z.B. ein * wird noch expandiert. Abhilfe: $line
 in Anführungszeichen setzen:

Nein. 
Ich habe es so am laufen und es funktioniert einwandfrei. 
Ich versehen die REJECT's in postfix header- und body_checks so mit 
einer eindeutigen Nummer. 

 l=1; cat ascii-date | while read line; do
 echo $line | sed -e s/#[0-9]*$/$l/g; l=$((l+1));
 done

KAnn aber trotzdem nicht schaden

-- 
cu

Roland Kruggel  mailto: [EMAIL PROTECTED]
System: Intel 3.2Ghz, Debian etch, 2.6.13.1, KDE 3.3.2



Re: Zeilen numerieren

2005-10-20 Diskussionsfäden Christian Bodenstedt
On Thu, 20 Oct 2005 09:57:35 +0200
Roland M. Kruggel [EMAIL PROTECTED] wrote:

   l=1; cat ascii-date | while read line; do
   echo $line | sed -e s/#[0-9]*$/$l/g; l=$((l+1));
   done
 
  Wenn line jedoch mehrere aufeinander folgende Freizeichen
  enthält, werden diese als Whitespace geschluckt und zu einem
  Freizeichen reduziert. Auch z.B. ein * wird noch expandiert.
 
 Nein. Ich habe es so am laufen und es funktioniert einwandfrei. Ich
 versehen die REJECT's in postfix header- und body_checks so mit
 einer eindeutigen Nummer.

Naja, ich weiß ja nicht wie einzelnen Zeilen deiner Eingabedaten so
aussehen, aber folgendes Beispiel zeigt IMHO ganz gut was (mit der
Bash) nicht unbedingt wie erwartet funktioniert:

| bash$ ls  # das liegt im Verzeichnis:
| andere_datei  ascii-date
| bash$ cat ascii-date  # so sieht die Eingabe aus:
| foo  bar * #
| foo#
|  bar   #
| bash$ l=1; cat ascii-date | while read line; do
|  echo $line | sed -e s/#[0-9]*$/$l/g; l=$((l+1));
|  done# und das wird draus gemacht:
| foo bar andere_datei ascii-date 1
| foo 2
| bar 3
| bash$ 

Doppelte Freizeichen weg, Stern expandiert.

  Abhilfe: $line in Anführungszeichen setzen:

Ist auch noch nicht die optimale Lösung. Anscheinend werden hier
immernoch Freizeichen am Anfang einer Zeile geschluckt (von read
line ?):

| bash$ l=1; cat ascii-date | while read line; do
|  echo $line | sed -e s/#[0-9]*$/$l/g; l=$((l+1));
|  done# auch noch nicht perfekt:
| foo  bar * 1
| foo2
| bar   3
| bash$ 

Dafür kenne ich keine Lösung.


Gruß,

Christian Bodenstedt



Re: Zeilen numerieren

2005-10-19 Diskussionsfäden Christian Bodenstedt
On Mon, 17 Oct 2005 17:07:29 +0200
Jörg Schütter [EMAIL PROTECTED] wrote:

 nicht sehr elegant, aber scheint zu funktionieren
 
 l=1; cat ascii-date | while read line; do 
 echo $line | sed -e s/#[0-9]*$/$l/g; l=$((l+1));
 done

Sowas in der Richtung wäre auch meine erste Idee gewesen. Wenn line
jedoch mehrere aufeinander folgende Freizeichen enthält, werden diese als
Whitespace geschluckt und zu einem Freizeichen reduziert. Auch z.B. ein *
wird noch expandiert. Abhilfe: $line in Anführungszeichen setzen:

l=1; cat ascii-date | while read line; do 
echo $line | sed -e s/#[0-9]*$/$l/g; l=$((l+1));
done


Gruß,

Christian Bodenstedt



Re: Zeilen numerieren

2005-10-18 Diskussionsfäden Sascha Hüdepohl
  Es besteht eine ascii-Datei mit folgendem Format:
 
  ...
  irgend ein text1 text1 text1 #421
  irgend ein text2 text2 text2 #422
  irgend ein text# text text- #423

awk 'sub(/#.+/, NR)'  ascii-Datei


-- 
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: Zeilen numerieren

2005-10-18 Diskussionsfäden Joerg Sommer
Hallo Sascha,

Sascha Hüdepohl [EMAIL PROTECTED] wrote:
  Es besteht eine ascii-Datei mit folgendem Format:
 
  ...
  irgend ein text1 text1 text1 #421
  irgend ein text2 text2 text2 #422
  irgend ein text# text text- #423

 awk 'sub(/#.+/, NR)'  ascii-Datei

Das funktioniert aber nicht in der dritten Zeile und sollte nicht auch
das #vor der Zeilennummer stehen bleiben?

Schöne Grüße, Jörg.
-- 
Alle reden von sexueller Belästigung am Arbeitsplatz.. Wenn das nicht
bald losgeht, kündige ICH!


-- 
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: Zeilen numerieren

2005-10-18 Diskussionsfäden Bernhard Wehmann
Am Dienstag 18 Oktober 2005 12:49 schrieb Joerg Sommer:
 Hallo Sascha,

 Sascha Hüdepohl [EMAIL PROTECTED] wrote:
   Es besteht eine ascii-Datei mit folgendem Format:
  
   ...
   irgend ein text1 text1 text1 #421
   irgend ein text2 text2 text2 #422
   irgend ein text# text text- #423
 
  awk 'sub(/#.+/, NR)'  ascii-Datei

 Das funktioniert aber nicht in der dritten Zeile und sollte
 nicht auch das #vor der Zeilennummer stehen bleiben?

Ja und es kann ja auch Zeilen geben, die noch kein #XXX am Ende 
haben. Dann wird es aber ein bisschen länger:

awk '{ a=match($0,#[0-9 ]*$); if(a) print  substr($0,1,a-1),  
#NR; else print $0, #NR; }'

Schöne Grüße Bernhard



Re: Zeilen numerieren

2005-10-18 Diskussionsfäden David Haller
Hallo,

Am Tue, 18 Oct 2005, Bernhard Wehmann schrieb:
Am Dienstag 18 Oktober 2005 12:49 schrieb Joerg Sommer:
 Sascha Hüdepohl [EMAIL PROTECTED] wrote:
   Es besteht eine ascii-Datei mit folgendem Format:
  
   ...
   irgend ein text1 text1 text1 #421
   irgend ein text2 text2 text2 #422
   irgend ein text# text text- #423
 
  awk 'sub(/#.+/, NR)'  ascii-Datei

 Das funktioniert aber nicht in der dritten Zeile und sollte
 nicht auch das #vor der Zeilennummer stehen bleiben?

Da fehlt nur der Anker:

awk 'sub(#[^#]*$,#NR);'
   ^^

Ja und es kann ja auch Zeilen geben, die noch kein #XXX am Ende 
haben. Dann wird es aber ein bisschen länger:

awk '{ a=match($0,#[0-9 ]*$); if(a) print  substr($0,1,a-1),  
   #NR; else print $0, #NR; }'

Geht einfacher (hier z.B. mit tab + # vor der Zeilennummer):

awk 'sub(#[^0-9]*$,#NR) || sub($,\t#NR);'

-dnh

-- 
An application/evil MIME type is defined for Web- or email-carried
mischief. Other MIME types can be embedded inside of evil sections;
this permit easy encoding of word processing documents with macro
viruses, etc.   -- RfC 3514


-- 
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)



Zeilen numerieren

2005-10-17 Diskussionsfäden Roland M. Kruggel
Hallo Liste,

ich habe ein kleine problem welches ich nicht  in den griff bekomme. 
Einen Lösungsansatz habe ich mit awk und sed probiert, bin leder 
beides mal gescheitert.

Folgede Aufgabenstellung:

Es besteht eine ascii-Datei mit folgendem Format:

...
irgend ein text1 text1 text1 #421
irgend ein text2 text2 text2 #422
irgend ein text# text text- #423
...

Das script soll alles was nach dem _letzten_ # kommt löschen und die 
aktuelle Zeilennummer dort eintragen.

Kann mir jemand helfen? Bin um jeden Tip dankbar.

-- 
cu

Roland Kruggel  mailto: [EMAIL PROTECTED]
System: Intel 3.2Ghz, Debian etch, 2.6.13.1, KDE 3.3.2



Re: Zeilen numerieren

2005-10-17 Diskussionsfäden Jörg Schütter
Hello Roland,

On Mon, 17 Oct 2005 15:36:58 +0200
Roland M. Kruggel [EMAIL PROTECTED] wrote:

 Hallo Liste,
 
 ich habe ein kleine problem welches ich nicht  in den griff bekomme. 
 Einen Lösungsansatz habe ich mit awk und sed probiert, bin leder 
 beides mal gescheitert.
 
 Folgede Aufgabenstellung:
 
 Es besteht eine ascii-Datei mit folgendem Format:
 
 ...
 irgend ein text1 text1 text1 #421
 irgend ein text2 text2 text2 #422
 irgend ein text# text text- #423
 ...
 
 Das script soll alles was nach dem _letzten_ # kommt löschen und die 
 aktuelle Zeilennummer dort eintragen.

nicht sehr elegant, aber scheint zu funktionieren

l=1; cat ascii-date | while read line; do 
echo $line | sed -e s/#[0-9]*$/$l/g; l=$((l+1));
done


Jörg

-- 
Jörg Schütter  http://www.schuetter.org/joerg
[EMAIL PROTECTED]http://www.lug-untermain.de/



Re: Zeilen numerieren

2005-10-17 Diskussionsfäden Ole Janssen
Am Montag, 17. Oktober 2005 15:36 schrieb Roland M. Kruggel:
 Folgede Aufgabenstellung:

 Es besteht eine ascii-Datei mit folgendem Format:

 ...
 irgend ein text1 text1 text1 #421
 irgend ein text2 text2 text2 #422
 irgend ein text# text text- #423
 ...

 Das script soll alles was nach dem _letzten_ # kommt löschen und die
 aktuelle Zeilennummer dort eintragen.

#! /bin/bash

nr=1

while read zeile; do
  echo ${zeile%#*}#$nr
  nr=$((nr+1))
done

Viele Grüße, Ole



Re: Zeilen numerieren

2005-10-17 Diskussionsfäden Roland M. Kruggel

 nicht sehr elegant, aber scheint zu funktionieren

 l=1; cat ascii-date | while read line; do
 echo $line | sed -e s/#[0-9]*$/$l/g; l=$((l+1));
 done

funktioniert sogar prima.
Danke

-- 
cu

Roland Kruggel  mailto: [EMAIL PROTECTED]
System: Intel 3.2Ghz, Debian etch, 2.6.13.1, KDE 3.3.2



Re: Zeilen numerieren

2005-10-17 Diskussionsfäden Joerg Sommer
Hallo Roland,

Roland M. Kruggel [EMAIL PROTECTED] wrote:
 Hallo Liste,

 ich habe ein kleine problem welches ich nicht  in den griff bekomme. 
 Einen Lösungsansatz habe ich mit awk und sed probiert, bin leder 

Mit sed wird das nix. sed kann nicht rechnen und damit nicht zählen.
(Stimmt nicht ganz, aber mit sed zu rechnen ist nicht einfach:
/usr/share/doc/sed/examples/dc.sed)

 Es besteht eine ascii-Datei mit folgendem Format:

 ...
 irgend ein text1 text1 text1 #421
 irgend ein text2 text2 text2 #422
 irgend ein text# text text- #423
 ...

grep -n ^ datei | sed 's/([0-9])*:(.*)#[^#]*/\2#\1/'

Schöne Grüße, Jörg.
-- 
Real programmers don't comment their code.  It was hard to write,
it should be hard to understand.


-- 
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)