Discussion:
Mit 'sed' Textbereich aus Datei ausschneiden
(zu alt für eine Antwort)
Michelle Konzack
2005-05-23 09:40:27 UTC
Permalink
Hallo,

Mit der commandline

sed -n <eine_datei -e "/^pattern1/,/^pattern2/p"

kann ich ja aus einer textdatei einen Teilbereich ausschneiden,
nur möchte ich von der ersten auftreffenden Leerzeile bis zum
ende der Datei ausschneiden.

Wie gibt man eine Leerzeile in 'sed' an ?

"/^$/" funktioniert nicht.

und wie das Ende einer Datei ?

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/88452356 67100 Strasbourg/France IRC #Debian (irc.icq.com)
Helmut Wollmersdorfer
2005-05-23 11:00:17 UTC
Permalink
Post by Michelle Konzack
Wie gibt man eine Leerzeile in 'sed' an ?
"/^$/" funktioniert nicht.
und wie das Ende einer Datei ?
Willst Dir nicht Perl anschauen? Lohnt sich IMHO binnen kürzester Zeit.

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

Zum AUSTRAGEN schicken Sie eine Mail an debian-user-german-***@lists.debian.org
mit dem Subject "unsubscribe". Probleme? Mail an ***@lists.debian.org (engl)
Tilo Schwarz
2005-05-23 12:50:10 UTC
Permalink
On Mon, 23 May 2005 11:39:11 +0200, Michelle Konzack
Post by Michelle Konzack
Hallo,
Mit der commandline
sed -n <eine_datei -e "/^pattern1/,/^pattern2/p"
kann ich ja aus einer textdatei einen Teilbereich ausschneiden,
nur möchte ich von der ersten auftreffenden Leerzeile bis zum
ende der Datei ausschneiden.
Wie gibt man eine Leerzeile in 'sed' an ?
"/^$/" funktioniert nicht.
und wie das Ende einer Datei ?
Mit sed weiß ich's nich, aber:

% cat eine_datei
1
2
3

4
5
6

7
8
9

% csplit eine_datei %^$%1
14

% cat xx00
4
5
6

7
8
9


Viele Grüße,

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

Zum AUSTRAGEN schicken Sie eine Mail an debian-user-german-***@lists.debian.org
mit dem Subject "unsubscribe". Probleme? Mail an ***@lists.debian.org (engl)
Michelle Konzack
2005-05-23 14:00:15 UTC
Permalink
Post by Tilo Schwarz
% csplit eine_datei %^$%1
^
Da fehlt ein '+' oder '-' oder Du mußt die '1'
weglassen, ansonsten gibts einen Fehler.

Ist aber nicht das, was ich will, weil ich keine schreibrechte
in dem Verzeichnis habe und "xx01" als STDOUT benötige.

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/88452356 67100 Strasbourg/France IRC #Debian (irc.icq.com)
Tilo Schwarz
2005-05-23 22:30:07 UTC
Permalink
On Mon, 23 May 2005 15:48:34 +0200, Michelle Konzack
Post by Michelle Konzack
Post by Tilo Schwarz
% csplit eine_datei %^$%1
^
Da fehlt ein '+' oder '-' oder Du mußt die '1'
weglassen, ansonsten gibts einen Fehler.
??:

% csplit eine_datei %^$%1
14

Wahrscheinlich liegt's eher an sowas:

% csplit --version
csplit (coreutils) 5.2.1


Viele Grüße,

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

Zum AUSTRAGEN schicken Sie eine Mail an debian-user-german-***@lists.debian.org
mit dem Subject "unsubscribe". Probleme? Mail an ***@lists.debian.org (engl)
Michelle Konzack
2005-05-23 22:50:08 UTC
Permalink
Post by Tilo Schwarz
% csplit eine_datei %^$%1
14
% csplit --version
csplit (coreutils) 5.2.1
Hmmm...

__( command 'csplit --version' )----------------
/
| csplit (GNU textutils) 2.0
| Written by Stuart Kemp and David MacKenzie.
\________________________________________________
Post by Tilo Schwarz
Viele Grüße,
Tilo
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/88452356 67100 Strasbourg/France IRC #Debian (irc.icq.com)
Mattias Pehlke
2005-05-23 13:40:15 UTC
Permalink
Post by Michelle Konzack
Mit der commandline
sed -n <eine_datei -e "/^pattern1/,/^pattern2/p"
kann ich ja aus einer textdatei einen Teilbereich ausschneiden,
nur möchte ich von der ersten auftreffenden Leerzeile bis zum
ende der Datei ausschneiden.
probier's mal hiermit:

sed -n <eine_datei -e "/^$/,/*$/p"

CU Mattias
Michelle Konzack
2005-05-23 14:10:10 UTC
Permalink
Weis nicht warum, aber nun funktioniert es...

cat $FILE |sed -n -e "/^$/,//p"

Echt eigenartig...

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/88452356 67100 Strasbourg/France IRC #Debian (irc.icq.com)
David Haller
2005-05-24 01:10:08 UTC
Permalink
Hallo,
Post by Michelle Konzack
Weis nicht warum, aber nun funktioniert es...
cat $FILE |sed -n -e "/^$/,//p"
Echt eigenartig...
Die kanonische Loesung ist:

sed -n -e '/^$/,$p' < "$FILE"

Dabei ist /^$/ die Start-Adresse, $ die End-Adresse und p der Befehl,
der auszufuehren ist, siehe man sed.

Noch einfacher ist aber:

sed -e '1,/^$/d' < "$FILE"

;)

HTH,
-dnh
--
61: Echtzeitberechnung
Kaffee kochen gehen (Sebastian Kokemohr-Schmidt)
--
Haeufig gestellte Fragen und Antworten (FAQ):
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an debian-user-german-***@lists.debian.org
mit dem Subject "unsubscribe". Probleme? Mail an ***@lists.debian.org (engl)
Michelle Konzack
2005-05-24 09:00:18 UTC
Permalink
Post by Michelle Konzack
Hallo,
sed -e '1,/^$/d' < "$FILE"
^^^^^^^^^
Soviel ich weis, reicht auch ein

sed -e '1,/^$/d' "$FILE"

:-)
Post by Michelle Konzack
HTH,
-dnh
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/88452356 67100 Strasbourg/France IRC #Debian (irc.icq.com)
Joerg Sommer
2005-05-24 06:30:12 UTC
Permalink
Post by Michelle Konzack
Hallo,
Mit der commandline
sed -n <eine_datei -e "/^pattern1/,/^pattern2/p"
das <eine_datei sollte nicht mitten im Befehl stehen. Ich weiß gar nicht,
ob POSIX sowas überhaupt zulässt.
Post by Michelle Konzack
kann ich ja aus einer textdatei einen Teilbereich ausschneiden,
nur möchte ich von der ersten auftreffenden Leerzeile bis zum
ende der Datei ausschneiden.
Einfach $

,----[ man sed ]---
| $ Match the last line.
`----

sed -n '/pattern1/,$p'

Jörg.
--
Da würde ich auch lieber den Panzerführerschein machen als den MCSE.
Bringt mehr, dürfte das gleiche kosten und macht sicher mehr Spaß.
Jens Dittmar in de.comp.security
--
Haeufig gestellte Fragen und Antworten (FAQ):
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an debian-user-german-***@lists.debian.org
mit dem Subject "unsubscribe". Probleme? Mail an ***@lists.debian.org (engl)
Michelle Konzack
2005-05-24 09:10:08 UTC
Permalink
Post by Joerg Sommer
das <eine_datei sollte nicht mitten im Befehl stehen. Ich weiß gar nicht,
ob POSIX sowas überhaupt zulässt.
Das habe ich aus den Script von "bugreport"...

function pinfo()
{
sed -n </var/lib/dpkg/status -e "/^Package: $PACKAGE$/,/^Description: /p"
}

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/88452356 67100 Strasbourg/France IRC #Debian (irc.icq.com)
Loading...