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
Textdatei mit Skript bearbeiten
Re: Textdatei mit Skript bearbeiten
So:
% a=$(expr $(cat datei | wc -l) -
% 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.
% a=$(expr $(cat datei | wc -l) -
% 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.
Re: Textdatei mit Skript bearbeiten
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
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
Re: Textdatei mit Skript bearbeiten
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.
<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.
Re: Textdatei mit Skript bearbeiten
@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?
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?
Re: Textdatei mit Skript bearbeiten
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
<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
Re: Textdatei mit Skript bearbeiten
Stimmt, mit Anführungszeichen geht es. Auch Variablen sind dann möglich.
Danke, sehr praktisch.
Danke, sehr praktisch.