PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeile in File



meez
16.07.2003, 18:14
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?

rup
16.07.2003, 19:22
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

JoBi
17.07.2003, 11:14
In vielen Fällen ist awk dein Freund

awk '{if (NR==3) print $0}' file

eXploed
25.02.2005, 12:38
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, 12: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.

eXploed
25.02.2005, 12:44
und wie soll das gehn :/

ich kenn weder gred noch perlskript ... bin dochn totaler linux n00b!

badfinger
25.02.2005, 12: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 :)

Cyber
25.02.2005, 12:56
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 :)

eXploed
25.02.2005, 13:21
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