Sie sind nicht angemeldet.

1

13.05.2004, 07:38

SHELL= datei auslesen

Hallo zusammen,
ich hoffe hier kann man mir helfen.
ich habe drei datein

DATAFILE="/ora_2/oradata/backup/cold/DATAFILE.lst";
LOGFILE="/ora_2/oradata/backup/cold/LOGFILE.lst";
CONTROLFILE="/ora_2/oradata/backup/cold/CONTROLFILE.lst";

diese drei datein, möchte ich auslesen.
der inhalt dieser datein. sehen so ca aus.
/ora_2/test/DBTEST33/system01.dbf
/ora_2/test/DBTEST33/undotbs01.dbf
/ora_2/test/DBTEST33/indx01.dbf
/ora_2/test/DBTEST33/tools01.dbf
/ora_2/test/DBTEST33/users01.dbf

ich muss es jetzt schaffen, jede datei einzelnt auszulesen. und jede zeile ( also jede datei) in eien variable oder arry rein zuschreiben. aber das bekomme ich absoult nicht hien.
kann mir jemand hier helfen ?
wäre super

2

13.05.2004, 09:13

Muss es denn unbedingt ein Shell-Script sein?
In Perl wäre das im Handumdrehen gemacht!
(hängt aber vom endgültigen Einsatzzweck ab)

Michael
Life is like ice cream: enjoy it before it melts!
"If there is (a God), all evidence indicates that He hates me." - Matt Groening

3

13.05.2004, 09:14

jep muss in shell sein
sonts wäre es ja zu leicht :-)
ne im ernst muss leider shell sein

4

13.05.2004, 10:51

Also mache ich hier mal den Anfang ;)
Leider programmiere ich viel zu selten Shell-Scripte, so dass dies nur einen Anfang darstellen kann ...

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/sh

Datei=textdatei
exec 0<"$Datei"

line_count=`wc $Datei | awk '{ print $1 }'`  # Zeilen in Datei

for line in `seq $line_count`
do
  read line
  echo $line
done

exit 0


Michael
Life is like ice cream: enjoy it before it melts!
"If there is (a God), all evidence indicates that He hates me." - Matt Groening

5

13.05.2004, 10:58

erstmal ein dankeschön für deine bemühungen

ich habe gerade dein script benutzt.
er kennt den befehel seq leider nicht

./test.sh[37]: seq: not found

:-(

6

13.05.2004, 11:00

Mist, in Deinem Profil steht ja "Solaris" ;)
Da steht /bin/sh noch für das Original!
Hast Du auch ne bash installiert? (wenn ja, erste Zeile auf #!/pfad/zu/bash umstellen) Ansonsten kann ich Dir nicht helfen ...


Michael
Life is like ice cream: enjoy it before it melts!
"If there is (a God), all evidence indicates that He hates me." - Matt Groening

7

13.05.2004, 11:07

hehe
hatte vorhien schon mit ksh und bash getestet
geht leider beides nicht
ich bin auch der meinung das es diesen befehel seq garnicht in der shell gibt

8

13.05.2004, 11:12

sowieso ;)
man seq: seq - print a sequence of numbers

Michael
Life is like ice cream: enjoy it before it melts!
"If there is (a God), all evidence indicates that He hates me." - Matt Groening

9

13.05.2004, 11:25

guck mal ich habe das jetzt so gelöst

n=1
while read line ;
do
eval "line$n=\"$line\""
n=`expr $n + 1`
done < $DATAFILE

klappt jetzt auch wunderbar
nur jetzt muss ich ergentwie mit basename die ausgabe spalten
also z.b. bei $line1 ein basename drauf das ich nur noch den dateinamen habe.

10

13.05.2004, 11:34

seq ist ein eigenstaendiges Programm und keine Built-in bash Kommando.

Gruss,
kp

Chucky the Devil

Pianist im Puff

  • »Chucky the Devil« ist männlich

Beiträge: 1 636

Wohnort: Koeln

Beruf: Network Architect

  • Nachricht senden

11

13.05.2004, 12:41

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ for i in $(cat test);do echo $i;done
/ora_2/test/DBTEST33/system01.dbf
/ora_2/test/DBTEST33/undotbs01.dbf
/ora_2/test/DBTEST33/indx01.dbf
/ora_2/test/DBTEST33/tools01.dbf
/ora_2/test/DBTEST33/users01.dbf

$ x=0;for i in $(cat test);do echo $x: $i;x=$(($x+1));done 
0: /ora_2/test/DBTEST33/system01.dbf
1: /ora_2/test/DBTEST33/undotbs01.dbf
2: /ora_2/test/DBTEST33/indx01.dbf
3: /ora_2/test/DBTEST33/tools01.dbf
4: /ora_2/test/DBTEST33/users01.dbf

$ x=0;for i in $(cat test);do eval y$x=$i;x=$(($x+1));done
$ echo $y2
/ora_2/test/DBTEST33/indx01.dbf


Laesst sich beliebig weiterspinnnen das Spielchen...

12

13.05.2004, 13:03

das ist jetzt aber (t)csh, oder?
Life is like ice cream: enjoy it before it melts!
"If there is (a God), all evidence indicates that He hates me." - Matt Groening

Chucky the Devil

Pianist im Puff

  • »Chucky the Devil« ist männlich

Beiträge: 1 636

Wohnort: Koeln

Beruf: Network Architect

  • Nachricht senden

13

13.05.2004, 13:32

Nee, da war 'ne orig. sh.
Wobei ich das ganze auch auf 'ner zsh und bash getestet habe - mit (t)csh funktioniert das so nicht.

[Edit]Auch mit ksh funktionierts[/Edit]

14

13.05.2004, 13:56

> mit (t)csh funktioniert das so nicht.

ist mir kurz danach auch aufgefallen :crazy: *peinlich*
(wobei ich mein Posting nicht wegzensieren wollte)

Michael
Life is like ice cream: enjoy it before it melts!
"If there is (a God), all evidence indicates that He hates me." - Matt Groening

Thema bewerten