shell: datei auslesen bei vielen zeilen ?

H

holzkbri

Jungspund
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...
 
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
 
genau und das ist mein problem
wie ich das z.b. in deinen ansatz mit einbinden würde
 
Suchst du das:

Code:
#!/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.
 
rup schrieb:
Suchst du das:

Code:
#!/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
 
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
 
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....
 
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
 
du bist ein schatz :-)

danke für diene große hilfe
 
jetzt muss ich nur noch mti basename rum spielen das ich die datei und den pfad in zwei verschieden habe
 
wow so schnell und so gut

vielen dank. du hast mir echt sehr geholfen
:)
 

Ähnliche Themen

Perl Zeilen Auslesen(logdatei) und auswerten

Verzeichnis mit 1200 Dateien auf Verweise in Textdateien checken

Hilfe für ein shell script

Zeilen aus Txt-Datei entfernen, wenn eine Spalte einen bestimmten Wert enthält

Spalten einer Datei in neue Datei integrieren.

Zurück
Oben