Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeile in File
Hy
Ich muss in einem File bestimmte Zeilen auslesen. Gibt es dafür einen Befehl.?
Man könnte es so machen, aber das ist zu langsam:
zeile=3
head -$zeile <file> | tail -1
Kennt jemand einen performanteren Weg?
awk, sed oder wenns nicht zu kompliziert ist grep.
http://www.linuxfibel.de/awk.htm
http://www.ruwela.com/Linux-Befehls-Beispiele/node20.html
http://www.linuxfibel.de/sed.htm
http://www.linuxfibel.de/grep.htm
In vielen Fällen ist awk dein Freund
awk '{if (NR==3) print $0}' file
kann ich hier auch machen das er nich nach der zeilennummer geht sondern nach dem inhalt der zeile??
ich brauch ein programm das mir ein zeile sucht und unter diese zeile einen text einfügt ...
ich hab leider keine ahnung von awk und werde es auch nich wieder brauchen, kann mir von euch jemand den code geben?
wäre wirklich total nett!
badfinger
25.02.2005, 11:42
Also für mich läuft das darauf hinaus, dass du erst nach dem gesucht Wort / Paragraph greppen musst und dann kommt der schwierige Teil... Ich würde die Datei mit grep durchsuchen, dann mit einem perlskript oder sowas die Datei auslesen; man kann auch die Zeilen zählen lassen... aber ich glaub das Schwierige ist doch das einfügen an der bestimmten Stlle. Hab sowas noch nicht gemacht... Aber generell, beim Suchen würde ich grep verwenden.
und wie soll das gehn :/
ich kenn weder gred noch perlskript ... bin dochn totaler linux n00b!
badfinger
25.02.2005, 11:52
Also grep is wirklich einfach...
Wenn du beispielsweise nach dem Wort Linuxnewbie suchen willst in der Datei: linux
wäre eine Möglichkeit:
more linux | grep Linuxnewbie
Perlskript meinte ich nur, weil ich das mal machen musste; da hatten wir einen Editor programmiert... Ich bin leider noch nicht so bewandert, was Shell Skripte betrifft. Ich hab aber vor da mehr zu tun; weil als Netzwerk Admin kann man sowas ja immer gebrauchen :)
Jetzt grad mal so aus'm Kopp und ohne Gewähr, da mom. keine bash zur Hand ;)
#!/bin/sh
INFILE="Deine Quelldatei"
OUTFILE="Deine Zieldatei"
STR2FND="Suchmuster"
NEWLN="Einzufügende Zeile"
for i in `cat $INFILE`
do
echo $i>>$OUTFILE
grep $STR2FND $i
if [ $? -eq "0" ]
then
echo $NEWLN>>$OUTFILE
fi
done
Man möge mich korrigieren :)
hm werd ich mal testen! vielen dank
edit:
grep: cannot open file $INFILE for reading: No such file or directory (error 2)
i01ot6.txpom : ./Test.sh: :0: not found
Powered by vBulletin® Version 4.2.0 Copyright ©2013 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.