Archiv verlassen und diese Seite im Standarddesign anzeigen : shell: datei auslesen bei vielen zeilen ?
holzkbri
11.05.2004, 11:56
Hallo an euch alle,
ich bekomme meine schleife einfach nicht hien.
ich habe drei datein. in jeder datei sind unterschiedlich viele zeilen drin.
ich muss in einer schleife, diese zeilen auslesen. und jede zeile in eine variable speichern.
hat jemand von euch eine idee wie ich das unter shell hienbekomme?
ihr würdet mir sehr helfen
mfg
holzkbri
was genau hast du denn mit dem skript vor, bzw was soll mit den zeilen der dateien geschehen? wenn du einzelne zeilen nacheinander auslesen willst, dann versuch folgendes:
while read LINE; do
mach was mit $LINE
done < dateiname
hoffe, dass ist ein ansatz, der dir hilft...
holzkbri
11.05.2004, 12:21
so war der ansatz super
das problem ist jetzt halt nur
das ich jede einzelne zeile in eine variable speichern muss
in jeder zeile sind verzeichnisse angegeben.
und jedes verzeichniss muss in eine variable geaschrieben werden.
vertstehst du mich?
weise doch einfach jede zeile einem array zu fertig. dann hast du jede zeile bzw. jede verzeichnis angabe in einer variablen :)
array[n]=wert
holzkbri
11.05.2004, 12:53
genau und das ist mein problem
wie ich das z.b. in deinen ansatz mit einbinden würde
Suchst du das:
#!/bin/bash
cat a.txt b.txt c.txt | while
read line
do
# mach irgend etwas
echo "Ausgabe: $line"
done
#! /bin/bash
set -A vars
set -i n=0
while read zeile ; do
vars[n]="$zeile"
n=n+1
done < /file.ftxt
Du kannst maximal 4096 Zeilen einlesen, da Arrays nur 2^12 Felder haben.
holzkbri
13.05.2004, 05:32
Suchst du das:
#!/bin/bash
cat a.txt b.txt c.txt | while
read line
do
# mach irgend etwas
echo "Ausgabe: $line"
done
ersmal danke für diene hilfe
leider speichert er bei dir alles in $line
er soll am besten. jede zeile einer datei in eine extra variable speichern
hast du da eine idee
holzkbri
13.05.2004, 05:41
hi
auch dir danke, das du versuchst mir zu helfen
ergent wie ist -i verkehrt. komtm die meldung bad option. :-(
set -A vars
n=0
while read zeile ; do
vars[n]="$zeile"
n=`expr $n + 1`
done < /file.ftxt
holzkbri
13.05.2004, 09:54
jep danke
aber er speichert doch nicht jede einzelene zeile
so das ich sie mti eineme cho abrufen kann
Doch...Er kann ja gar nicht anderst..:D
Es gibt natürlich noch eine andere Lösung, ohne einen Array:
n=1
while read line ; do
eval "line$n=\"$line\""
n=`expr $n + 1`
done < file
Das ergibt Variablen die so heissen: line1, line2....
holzkbri
13.05.2004, 10:04
achso
guckmal ich habe das jetzt so gemacht
n=1
while read line ; do
eval `line$n=\"$line\"`
n=`expr $n + 1`
done < $DATAFILE
echo "line1";
echo "line2";
der fehler ist so ( komisch. der bringt mir das richtige raus aber..)
./test2.sh[36]: line1="/ora_2/oradata/DBTEST33/system01.dbf": not found
./test2.sh[36]: line2="/ora_2/oradata/DBTEST33/undotbs01.dbf": not found
./test2.sh[36]: line3="/ora_2/oradata/DBTEST33/indx01.dbf": not found
./test.sh[36]: line4="/ora_2/oradata/DBTEST33/tools01.dbf": not found
./test2.sh[36]: line5="/ora_2/oradata/DBTEST33/users01.dbf": not found
line1
line2
holzkbri
13.05.2004, 10:13
du bist ein schatz :-)
danke für diene große hilfe
holzkbri
13.05.2004, 10:14
jetzt muss ich nur noch mti basename rum spielen das ich die datei und den pfad in zwei verschieden habe
DIRNAME=`dirname $lineX`
FILENAME=`basename $linX`
holzkbri
13.05.2004, 10:29
wow so schnell und so gut
vielen dank. du hast mir echt sehr geholfen
:)
Powered by vBulletin® Version 4.2.0 Copyright ©2013 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.