Textdatei mit Skript bearbeiten

Post Reply
Message
Author
hammerp
Posts: 18
Joined: 11. Jun 2002 0:12

Textdatei mit Skript bearbeiten

#1 Post by hammerp »

Hallo,
ich möchte in einem Skript aus einer Textdatei die letzten acht Zeilen löschen.
Wie kann ich das anstellen?
Ich kenne sed, komme aber mit den Befehlen nicht klar. Kennt vielleicht jemand eine Übersicht oder eine allgemeine Anleitung?
Vielen Dank im Voraus
hammerP

hammerp
Posts: 18
Joined: 11. Jun 2002 0:12

Re: Textdatei mit Skript bearbeiten

#2 Post by hammerp »

So:
% a=$(expr $(cat datei | wc -l) - 8)
% cat datei | sed -e $a,1000d
Klappt natürlich nur wenn datei weniger als 1000 Zeilen hat.
Für zusätzliche Anregungen wäre ich dankbar, zum Beispiel wie man in das address-range-Ende (1000) eine Variable einsetzen kann.

cd
Posts: 114
Joined: 19. Dec 2000 21:04

Re: Textdatei mit Skript bearbeiten

#3 Post by cd »

per wc -l zeilen zaehlen, 8 abziehen und per head den Anfang > neue Datei

z.B.
#!/bin/csh -f

@ laenge = `wc -l test.txt` -8

head -$lanege test.txt > neu.txt

exit (0)

Sorry, weiss gerade nicht, wie man in bash rechnet.

Gruesse, Clemens

rattengift

Re: Textdatei mit Skript bearbeiten

#4 Post by rattengift »

die letzte zeile wird in sed mit "$" bezeichnet. also sed x,$d löscht von x bis ende.
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">#!/bin/bash
ABZEILE=$[ $(cat datei | wc -l) - 8 ]
cat datei | sed ${ABZEILE},$d > datei
</font><hr></pre></blockquote>falls die datei auch kürzer als 8 zeilen sein kann, muss man das noch abfangen.

hammerp
Posts: 18
Joined: 11. Jun 2002 0:12

Re: Textdatei mit Skript bearbeiten

#5 Post by hammerp »

@Clemens: Hier mit head zu arbeiten ist eigentlich wirklich viel eleganter; danke für den Tipp.
Rechnen kann man übrigens entweder mit expr oder wie rattengift es gemacht hat mit eckigen Klammern drumherum.
@rattengift: Das habe ich auch schon versucht, allerdings klappt es nicht. Probier es selber auch mal und guck ob es geht. Wenn ja, wie genau hast du es eingegeben?

rattengift

Re: Textdatei mit Skript bearbeiten

#6 Post by rattengift »

oops, funktioniert tatsächlich nicht. so gehts:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">#!/bin/bash
datei=xxxxxx

ABZEILE=$[ $(cat $datei | wc -l) - 8 ]
cat $datei | sed "${ABZEILE},$ d" > $datei</font><hr></pre></blockquote>übrigens werden, wenn du "-8" rechnest nicht 8 sondern 9 zeilen gelöscht <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">
mehr infos zu sed: http://www.grymoire.com/Unix/index.html

hammerp
Posts: 18
Joined: 11. Jun 2002 0:12

Re: Textdatei mit Skript bearbeiten

#7 Post by hammerp »

Stimmt, mit Anführungszeichen geht es. Auch Variablen sind dann möglich.
Danke, sehr praktisch.

Post Reply