Re: sed ; in \n ersetzen

2004-05-19 Diskussionsfäden Heike C. Zimmerer
Bertram Scharpf [EMAIL PROTECTED] writes:

 Hallo Heike,

 Am Dienstag, 18. Mai 2004, 20:40:13 +0200 schrieb Heike C. Zimmerer:
 Bertram Scharpf [EMAIL PROTECTED] writes:
 
  Daß GNU sed 3.02 keine Escape-Sequenzen kann ist erbärmlich
  und zurecht behoben worden. Dennoch meine ich, es
  widerspricht der sed-Philosophie, explizit Umbruchzeichen
  anzugeben.
 
 Ich weiß nicht, woher du deine Kenntnisse der sed-Pholisophie hast.
 SUSv3 und POSIX sind jedenfalls gar nicht deiner Ansicht:
 [...]

 Ich hab's doch nicht bös' gemeint. Die Aufgabe von sed
 beginnt halt, wenn die Daten in Zeilen aufgebrochen worden
 ist, und sie endet damit, daß Zeilen wieder zusammengefügt
 werden. Da paßt es nicht dazu, daß explizit Zeilenumbrüche
 eingefügt werden. Ich wollte doch sagen, daß ich nichts
 schlechtes dabei finde.

Ja, ist ok.  Ich sehe die Geschichte von sed halt etwas anders, und
das Wort erbärmlich kam etwas heftig an.  Aber man kann bei der
zugrundeliegenden Philosophie sicher verschiedener Ansicht sein - kein
Zweifel.

Alles klar,

 Heike


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



sed ; in \n ersetzen

2004-05-18 Diskussionsfäden Daniel Golesny
Hallo,
ich habe eine csv-Datei und möchte alle
Semikolon in einen Umbruch ersetzen.
Ich dachte `cat in.csv | sed -e 's/;/\n/g'  out.csv` würde
das funktionieren, tuts aber nicht.
Er ersetzt es in '\n' und nicht in den Umbruch.
\\n oder bei sed mit  ging auch nicht.
Ich weiss nicht weiter.
Kann mir das jemand helfen?
Danke
Daniel
--
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 ; in \n ersetzen

2004-05-18 Diskussionsfäden Christoph Bier
Daniel Golesny schrieb am 18.05.2004 11:50

 Hallo,
 
 ich habe eine csv-Datei und möchte alle
 Semikolon in einen Umbruch ersetzen.
 
 Ich dachte `cat in.csv | sed -e 's/;/\n/g'  out.csv` würde

cat ist überflüssig.

$ sed 's/;/\n/g' in.csv  csv.out

tut bei mir das, was Du willst. in.csv hat bei mir den Inhalt:

eins;zwei;drei;vier;fuenf

 das funktionieren, tuts aber nicht.

Bei mir schon.

 Er ersetzt es in '\n' und nicht in den Umbruch.
 \\n oder bei sed mit  ging auch nicht.
 Ich weiss nicht weiter.

$ sed --version
GNU sed Version 4.0.9 [...]

$ bash --version
GNU bash, version 2.05b.0(1)-release (i386-pc-linux-gnu) [...]

HTH!

Viele Grüße,

Christoph


-- 
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 ; in \n ersetzen

2004-05-18 Diskussionsfäden Stefan Blechschmidt
Daniel Golesny schrieb:
 Hallo,
 
 ich habe eine csv-Datei und möchte alle
 Semikolon in einen Umbruch ersetzen.
 
 Ich dachte `cat in.csv | sed -e 's/;/\n/g'  out.csv` würde
 das funktionieren, tuts aber nicht.
 Er ersetzt es in '\n' und nicht in den Umbruch.
 \\n oder bei sed mit  ging auch nicht.
 Ich weiss nicht weiter.
 
 Kann mir das jemand helfen?

sed keine Ahnung aber perl
cat in.csv | perl -ne 'tr/;/\n/; print'  out.csv

-- 
/// HTH
   (..)  - stefan
oo0-\/-0oo---
http://www.sbsbavaria.de/


-- 
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 ; in \n ersetzen

2004-05-18 Diskussionsfäden Sascha Hdepohl
* Daniel Golesny ([EMAIL PROTECTED]) wrote:
 
 Ich dachte `cat in.csv | sed -e 's/;/\n/g'  out.csv` würde
 das funktionieren, tuts aber nicht.

bei mir mit:
GNU sed Version 4.0.9

$ echo hier;halo | sed -e 's/;/\n/'
hier
halo
$ 

gruss
sascha



Re: sed ; in \n ersetzen

2004-05-18 Diskussionsfäden Torsten Schneider
On Tue, May 18, 2004 at 11:44:04AM +0200, Daniel Golesny wrote:

 ich habe eine csv-Datei und möchte alle
 Semikolon in einen Umbruch ersetzen.
 
 Ich dachte `cat in.csv | sed -e 's/;/\n/g'  out.csv` würde

Useless use of cat...

Es funktioniert u.a.:

perl -ne 'chomp; foreach(split /;/) { print $_\n };' in.csv out.csv

Das Problem ist, dass man beim sed den Zeilenumbruch als Zeichen nicht
gescheit handlen kann.


Grüße, Torsten


-- 
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 ; in \n ersetzen

2004-05-18 Diskussionsfäden Walter Saner
Daniel Golesny schrieb:

 ich habe eine csv-Datei und möchte alle
 Semikolon in einen Umbruch ersetzen.

tr ';' '\n'  in.csv  out.csv


Ciao
Walter


-- 
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 ; in \n ersetzen

2004-05-18 Diskussionsfäden Sebastian Inacker
Hallo Daniel.

On Tue, May 18, 2004 at 11:44:04AM +0200, Daniel Golesny wrote:
 ich habe eine csv-Datei und möchte alle
 Semikolon in einen Umbruch ersetzen.

Wenn es nicht 'sed' sein muss, dann kannst Du 'tr' verwenden:

   tr ; \n  in.csv  out.csv

'tr' ist im Paket textutils drin.

Tschuess,
  Sebastian


-- 
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 ; in \n ersetzen

2004-05-18 Diskussionsfäden Daniel Golesny
Christoph Bier wrote:
Daniel Golesny schrieb am 18.05.2004 11:50

das funktionieren, tuts aber nicht.
Bei mir schon.
Er ersetzt es in '\n' und nicht in den Umbruch.
\\n oder bei sed mit  ging auch nicht.
Ich weiss nicht weiter.
$ sed --version
GNU sed Version 4.0.9 [...]
ok, dann bin ich nicht blöd, sondern meine Version alt
GNU sed version 3.02
habe halt Woody ...
mit `tr' hats funktioniert. Danke an alle.
Tschüss
Daniel
--
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 ; in \n ersetzen

2004-05-18 Diskussionsfäden Andreas Schmidt
On 2004.05.18 11:44, Daniel Golesny wrote:
Hallo,
ich habe eine csv-Datei und möchte alle
Semikolon in einen Umbruch ersetzen.
Ich dachte `cat in.csv | sed -e 's/;/\n/g'  out.csv` würde
das funktionieren, tuts aber nicht.
Er ersetzt es in '\n' und nicht in den Umbruch.
\\n oder bei sed mit  ging auch nicht.
Ich weiss nicht weiter.
Also, bei mir klappt das:
[EMAIL PROTECTED]:~/$ echo das ist ein test;hier geht es weiter  in.csv
[EMAIL PROTECTED]:~/$ cat in.csv | sed 's/;/\n/g'  out.csv
[EMAIL PROTECTED]:~/$ cat out.csv
das ist ein test
hier geht es weiter
Syntax sollte also richtig sein. Vielleicht  koenntest Du ja nochmal  
versuchen, die single(') durch double () quotes zu ersetzen; zumindest  
hier macht das aber auch keinen Unterschied...

Schoenen Gruss,
Andreas
--
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 ; in \n ersetzen

2004-05-18 Diskussionsfäden Gebhard Dettmar
Daniel Golesny scribbled on Tuesday, May 18, 2004 12:51 PM

 Christoph Bier wrote:
 Daniel Golesny schrieb am 18.05.2004 11:50
 
 das funktionieren, tuts aber nicht.
 
 Bei mir schon.
 
 Er ersetzt es in '\n' und nicht in den Umbruch.
 \\n oder bei sed mit  ging auch nicht.
 Ich weiss nicht weiter.
 
 $ sed --version
 GNU sed Version 4.0.9 [...]
 
 ok, dann bin ich nicht blöd, sondern meine Version alt GNU sed
 version 3.02 
 
 habe halt Woody ...
kapiere ich nicht. Das muss gehen, seit es sed gibt. In sed gibt's
doch sogar Multi-line-commands (N,D,P)
???  
 
 mit `tr' hats funktioniert. Danke an alle.
 
 Tschüss
 Daniel
gruß
gebhard



Re: sed ; in \n ersetzen

2004-05-18 Diskussionsfäden Bertram Scharpf
Hallo,

Am Dienstag, 18. Mai 2004, 11:44:04 +0200 schrieb Daniel Golesny:
 ich habe eine csv-Datei und möchte alle
 Semikolon in einen Umbruch ersetzen.
 
 Ich dachte `cat in.csv | sed -e 's/;/\n/g'  out.csv` würde
 das funktionieren, tuts aber nicht.
 Er ersetzt es in '\n' und nicht in den Umbruch.
 \\n oder bei sed mit  ging auch nicht.

Daß GNU sed 3.02 keine Escape-Sequenzen kann ist erbärmlich
und zurecht behoben worden. Dennoch meine ich, es
widerspricht der sed-Philosophie, explizit Umbruchzeichen
anzugeben. Von den Erfindern favorisiert wäre sicherlich so
eine Lösung:

$ echo 'a;b;c;d' | sed ':l;/;/{h;s/;.*//;p;g;s/[^;]*;//;b l;}'

Ich gebe zu, das ist nicht jedermanns Geschmack.

Gruß
Bertram

-- 
Bertram Scharpf
Stuttgart, Deutschland/Germany
http://www.bertram-scharpf.de


-- 
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 ; in \n ersetzen

2004-05-18 Diskussionsfäden Martin Dickopp
Gebhard Dettmar [EMAIL PROTECTED] writes:

 Daniel Golesny scribbled on Tuesday, May 18, 2004 12:51 PM

 Christoph Bier wrote:
 Daniel Golesny schrieb am 18.05.2004 11:50
 
 das funktionieren, tuts aber nicht.
 
 Bei mir schon.
 
 Er ersetzt es in '\n' und nicht in den Umbruch.
 \\n oder bei sed mit  ging auch nicht.
 Ich weiss nicht weiter.
 
 $ sed --version
 GNU sed Version 4.0.9 [...]
 
 ok, dann bin ich nicht blöd, sondern meine Version alt GNU sed
 version 3.02 
 
 habe halt Woody ...
 kapiere ich nicht. Das muss gehen, seit es sed gibt. In sed gibt's
 doch sogar Multi-line-commands (N,D,P)
 ???  

Es geht mit jedem sed, wenn man statt der Zeichenfolge Backslash-n
tatsächlich ein Newline-Zeichen schreibt, welches man seinerseits mit
einem Backslash quoten muß. Dies ist entweder zu bewerkstelligen, indem
man das Newline-Zeichen in einer Variablen speichert:

nl='
'
echo 'a;b;c' | sed s/;/\\$nl/g

Oder man schreibt es wirklich da, wo man es haben will:

echo 'a;b;c' | sed 's/;/\
/g'

Martin


-- 
   ,--.Martin Dickopp, Dresden, Germany ,= ,-_-. =.
  / ,- )   http://www.zero-based.org/  ((_/)o o(\_))
  \ `-' `-'(. .)`-'
   `-. Debian, a variant of the GNU operating system.   \_/



Re: sed ; in \n ersetzen

2004-05-18 Diskussionsfäden Heike C. Zimmerer
Bertram Scharpf [EMAIL PROTECTED] writes:

 Daß GNU sed 3.02 keine Escape-Sequenzen kann ist erbärmlich
 und zurecht behoben worden. Dennoch meine ich, es
 widerspricht der sed-Philosophie, explizit Umbruchzeichen
 anzugeben.

Ich weiß nicht, woher du deine Kenntnisse der sed-Pholisophie hast.
SUSv3 und POSIX sind jedenfalls gar nicht deiner Ansicht:

[SUSv3:] 

| The replacement string [...] The meaning of a '\' immediately
| followed by any character other than '' , '\' , a digit, or the
| delimiter character used for this command, is unspecified.

Deine nicht-erbärmliche Version ist also genau genommen undefiniertes
Verhalten.  Und weiter:

| A line can be split by substituting a newline into it. The
| application shall escape the newline in the replacement by preceding
| it by a backslash.

Dort ist also eindeutig das festgeschrieben, was für dich erbärmlich
und philosophiewidrig ist.

 Von den Erfindern favorisiert wäre sicherlich so
 eine Lösung:

 $ echo 'a;b;c;d' | sed ':l;/;/{h;s/;.*//;p;g;s/[^;]*;//;b l;}'

 Ich gebe zu, das ist nicht jedermanns Geschmack.

Erm.. 

Gruß,

 Heike


-- 
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 ; in \n ersetzen

2004-05-18 Diskussionsfäden Bertram Scharpf
Hallo Heike,

Am Dienstag, 18. Mai 2004, 20:40:13 +0200 schrieb Heike C. Zimmerer:
 Bertram Scharpf [EMAIL PROTECTED] writes:
 
  Daß GNU sed 3.02 keine Escape-Sequenzen kann ist erbärmlich
  und zurecht behoben worden. Dennoch meine ich, es
  widerspricht der sed-Philosophie, explizit Umbruchzeichen
  anzugeben.
 
 Ich weiß nicht, woher du deine Kenntnisse der sed-Pholisophie hast.
 SUSv3 und POSIX sind jedenfalls gar nicht deiner Ansicht:
 [...]

Ich hab's doch nicht bös' gemeint. Die Aufgabe von sed
beginnt halt, wenn die Daten in Zeilen aufgebrochen worden
ist, und sie endet damit, daß Zeilen wieder zusammengefügt
werden. Da paßt es nicht dazu, daß explizit Zeilenumbrüche
eingefügt werden. Ich wollte doch sagen, daß ich nichts
schlechtes dabei finde.

Meine Kenntnisse der sed-Philosophie beziehe ich aus dem
genauen Studium der Funktionsweise des Programms, nicht aus
einer Dokumentation, die nach und nach ergänzt worden ist
mit diesem oder jenem neuen Feature. Zeilenorientiert heißt
für mich zeilenorientiert.

Die Lösung, die ich angeboten habe, zeigt, meine ich, gut
genug, daß ich sed nicht überheblich gegenüberstehe.
Außerdem, wie ich erwähnt habe, hat sed auch seine
Funktionalität gegenüber Umbruchzeichen von sich aus
ergänzt.

Also: Ich bitte, meine Äußerung nicht als Gemaule
aufzufassen, sondern als einen konstruktiven Beitrag zum
Thema Programmierstil. Nur so habe ich es gemeint, und im
übrigen bezeichne ich meine eigenen Programme wesentlich
häufiger als erbärmlich als die anderer
Open-Source-Projekte.

Gruß
Bertram

-- 
Bertram Scharpf
Stuttgart, Deutschland/Germany
http://www.bertram-scharpf.de


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