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