PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Genauigkeit beim Auslesen einer Datei



PhoenixDH
05.09.2005, 12:47
Ich habe ein Script, welches eine Datei auf den Systemnamen durchsucht !
Das Script sieht so aus:


D_delete() {
[ "$DEBUG" -gt 0 ] && echo "D_delete()"$*
[ "$DEBUG_D_delete" -eq 1 ] && set -xv

MASCHINE=$1
SYSTEM=`grep ${MASCHINE} ${PFAD}/ALL_HWINFO | awk -F: '{ print $3 }'`

grep -v ${MASCHINE} ${SOURCEPFAD}/${SYSTEM}.txt > ${SOURCEPFAD}/${SYSTEM}.tmp
sort ${SOURCEPFAD}/${SYSTEM}.tmp > ${SOURCEPFAD}/${SYSTEM}.txt
rm ${SOURCEPFAD}/${SYSTEM}.tmp


if [ -d ${SOURCEPFAD}/${MASCHINE} ]
then
if [ -d ${SOURCEPFAD}/maschinen_old/${MASCHINE} ]
then
#Wenn ja wird diese geloescht
rm -r ${SOURCEPFAD}/maschinen_old/${MASCHINE}
fi
mv ${SOURCEPFAD}/${MASCHINE} ${SOURCEPFAD}/maschinen_old/
fi

grep -c HREF ${SOURCEPFAD}/${SYSTEM}.txt >${SOURCEPFAD}/${SYSTEM}_zaehler.txt

} # end D_delete


Die Datei ALL_HWINFO soz.B.:


fire: Precision WorkStation 360:WST
fire2: Precision WorkStation 360:WST
fire3: Precision WorkStation 360:WST


Das Problem das jetzt in dem Script ist, das er nicht genau fire von z.B. fire2 unterscheiden kann, und somit eine falsche txt Datei anlegt in dem Script !

Weiß leider nicht an welcher Stelle der Fehler ist und wie ich ihn beheben kann, aber ich denke mal der Fehler liegt irgendwo an der Stelle:


SYSTEM=`grep ${MASCHINE} ${PFAD}/ALL_HWINFO | awk -F: '{ print $3 }'`


Wäre euch dankbar wenn ihr mir helfen könntet !

Achso, in dem $SYSTEM sollte in dem Fall hier WST drin stehen !

Oder liegt das irgendwie am Zeilenumbruch oder so ?

damager
05.09.2005, 13:22
versuche doch mal es mit der option

grep -w

der finden dann nur die exakten treffer :]

ist es das was du willst?

PhoenixDH
05.09.2005, 13:30
Denke schon das es das ist, das Problem ist, das Script verstehe ich noch nicht ganz, bin auch schon die ganze Zeit am Testen wo genau der Fehler liegt, aber ich werde es mal versuchen !

damager
05.09.2005, 13:42
einfach die zeile mit:


SYSTEM=`grep -w ${MASCHINE} ${PFAD}/ALL_HWINFO | awk -F: '{ print $3 }'`

ersetzen :]

PhoenixDH
05.09.2005, 13:52
ja, hab ich, aber das ist irgendie nicht der Fehler, ich bekomme hier total komische ausgaben !

Bei der ALL_HWINFO Datei:


fire2: Precision WorkStation 360:TSW
fire4: Precision WorkStation 360:xyz
fire: Precision WorkStation 360:WST


bekomme ich sowas mal gemeldet:


sort: open failed: /cfg2html_server/docs/docs_aix/TSW: No such file or directory
cp: target `WST.txt' is not a directory
rm: cannot remove `/cfg2html_server/docs/docs_aix/TSW': No such file or directory
rm: cannot remove `xyz': No such file or directory
rm: cannot remove `WST.tmp': No such file or directory
grep: /cfg2html_server/docs/docs_aix/TSW: No such file or directory
grep: xyz: No such file or directory
grep: WST.txt: No such file or directory


mit oder ohne -w !

damager
05.09.2005, 14:40
aber das hat dann aber nix mit der grep-option zu tun. da stimmt was anderes bei dir nicht mehr.

mach doch mal selber:
grep -v fire /pfad/zu/ALL_HWINFO | awk -F: '{ print $3 }'
dann sollest du nur eine zeile bekommen und von der nur das WST.
was soll aber rauskommen?

PhoenixDH
07.09.2005, 12:31
Es hat doch geklappt mit -w, hatte es nur an 2 Stellen nicht drin, weil ich dachte das hätte damit nix zu tun, also jetzt läuft es perfekt, soweit ich getestet habe !