Skript um Datei auslesen und in Array schreiben

Ragna_44

Grünschnabel
Servus erst ein mal an alle.

Ich habe eine Datei "neuedateinamen29.txt" die ich auslesen möchte.
Allerdings möchte ich den Inhalt:
test.txt
neu.txt
ne.txt
.....
in ein Array einlesen, sodass ich folgendes Ergebnis bekomme
Array[0]=test.txt
Array[1]=neu.txt
.....
Anschließend will ich vorhandene Dateien mit
mv $alteDatainame[0] $Array[0]
umbenennen.


Ich habe hier auch schon ein paar Beispiele gefunden die so ähnlich waren aber ich trotz Testen nicht auf die Lösung kam.
XML_PATH=/usr/local/src/rrd2xml/xml
RRD_PATH=/var/lib/ntop/rrd/interfaces/eth0

i=1
MYFILES=`ls $RRD_PATH -fl -1 | grep rrd | awk -F' ' '{print $9,$10}'`
FILECOUNT=`echo $MYFILES | awk -F' ' '{print NF}'`

while ! [ $i -gt $FILECOUNT ]
do
MYARRAY[$i]=`echo $MYFILES | awk -F' ' '{print $'"$i"'}'`
echo "${MYARRAY[$i]}"
i=`expr $i + 1`
done
 
Wie ordnest Du denn die neuen Namen den alten zu? Stehen die auch irgendwo drin oder ergeben die sich anders?
 
Hi.

Die Zeilen einer Datei kann man folgendermaßen in ein Array einlesen:
Bash:
IFS=$'\n' lines=( $( cat /dir/file ) )
Gruß
 
Müsste ich davor nicht eine schleife bauen damit alle zeilen eingelesen werden deepthroat?
Zum Beispiel so:

i=0
filecount="`ls | wc -l`"

for $i in $filecount
do
IFS[$i]=$'\n' lines=( $( cat /root/hallo.txt ) )
i=`expr $i+1`
done

Nur bekomme ich leider eine Fehlermeldung.
 
Zuletzt bearbeitet:
Ach jetzt verstehe ich auch schon etwas mehr.
Also muss ich deine Zeile wie beschrieben verwenden.
IFS=$'\n' lines=( $( cat /dir/file ) )

Nur wie rufe ich jetzt den Inhalt des Array IFS ab?
Der Versuch mit echo $IFS[0] hat nichts gebracht
 
Ach jetzt verstehe ich auch schon etwas mehr.
Also muss ich deine Zeile wie beschrieben verwenden.
IFS=$'\n' lines=( $( cat /dir/file ) )

Nur wie rufe ich jetzt den Inhalt des Array IFS ab?
Der Versuch mit echo $IFS[0] hat nichts gebracht
Wie bereits erwähnt ist das Array nicht IFS, das Array heißt lines. IFS ist eine spezielle Variable. Wie man Arrays benutzt steht im Handbuch :)rtfm: "man bash")

Gruß
 
Hi Ragna_44,
ich brauch in etwa das selbe Script wie Du.
Hab eine Datei mit einer Liste mit nummern und möchte eine bestimmte Funktion mit jeder Nummer einmal ausführen. Müsste deinem Script recht ähnlich sein.
Könntest Du mir deines vielleicht geben, würde mir einige Zeit sparen :)
 

Neue Beiträge

Zurück