Batch Zeile aus Datei an Anfang der Datei schreiben

j0k3r87

Lieutenant
Registriert
Feb. 2008
Beiträge
528
Hallo,

wie im Titel bereits beschrieben möchte ich eine Funktion schreiben die mir die Zeile, dessen Wert ich per Argument übergebe, an die Spitze der Datei schreibt.

Die Datei sieht so aus:

1 - Hallo
2 - Huhu
3 - Test
4 - Grüße

wenn ich nun mein Skript per '~./skript top 3' starte, möchte ich, das die dritte Zeile an die erste Stelle gesetzt wird.
Bisher hab ich folgenden Code, nur gibt er mir immer anstelle von zB "3 - Test" nur die 3 an erster Stelle aus, also:

3
2 - Hallo
3 - Huhu
4 - Grüße

Code:
if [ "$1" == "top" ]; then
    x=$[$2+1]
    y=$2    
    sed -i -e '1i'$y'' $FILE   
    sed -i -e "$x"d $FILE
   show
fi

Hoffe ihr könnt mir Ratschläge geben :)
 
rowtotop=`sed -n "$1p" $FILE`
rowtodelete=`expr $1 + 1`
sed "1i $rowtotop" -i $FILE
sed -i -e "$rowtodelete"d $FILE

Wobei natürlich $1 als Argument der Zeile entspricht, die Du nach oben setzen willst
 
Kein DOS Batch, das ist richtig, aber das Beispiel vom Ersteller ist auch ein Linux Script
 
es stimmt schon, es geht um ein linux skript :) testen kann ich es leider erst morgen
 
Geht auch noch kürzer (Wenn man erst löscht und dann einfügt)

Code:
rowtotop=`sed -n "$1p" $FILE`
sed -i -e "$1"d $FILE
sed "1i $rowtotop" -i $FILE
 
Vielen Dank für eure Hilfe, hat wunderbar funktioniert :)
 
Zurück
Oben