Probleme mit variable

M

muemmi

Eroberer
hi

eine Dumme Frage

mit diesem befehl

cat $datroh | awk -F"," '{for (I=1; I<NF; I++) print $I;}' > c:/qls/qls/kln/qsp/mischer/Daten_Um/datei.txt

mach ich aus einer datei einzeilig eine mehrzeilige

das klappt auch

dummerweise ändert sich aber $datroh ständig und wenn ich den dateinamen am ende weglasse das läift es nicht mehr

der inhalt von datroh wird so erzeugt:

for datroh in $(find c:/qls/qls/kln/qsp/mischer/Daten -type f -name "Tank*"); do

optimal wäre es man könnte eine neue variable erzeugen mit einem teil des inhaltes von datroh dir datei heist zum beispiel tank2688.tank

ich bräuchte nur das 2688

ich krieg es nicht hin

hat einer eine tipp !

danke
 
Welche Shell verwendest Du denn? *grübel*
 
das teil heißt mkstoolkit und ist eine shell auf windows (ich wurde vom kunden gezwungen) reagirt aber auf fast alle befehle

es hat sich bei mir rasukristalisiert das ich im prinzip nut eine string operation brauche

sprich nehme die variable und schniede ein teil raus in ine neue und verbide sie mit einem neuen pfad

da ich ein newbie bin fällt mir das schwer
 
Probier mal Folgendes

Code:
echo $datroh | sed -e 's/tank\(.*\)\.tank/\1/'

Gruss, Xanti
 
ähmmm

was sollte passieren?

er bringt nut das echo wieder der selben variablen!
 
jetz habe ich es

es läuft

wenn ich den befehl verstehen würde wäre das prima

gibt es irgenwo eine deutsche befehlsreffrenz

ist echt schwierig
 
Google mal nach "sed Tutorial" oder "man sed". Wenn dann noch Fragen sind, kannst Du hier fragen.
 
ich hab jetzt noch weitergebastelt

das tut es jetzt!

for faxroh in $(find c:/qls/qls/kln/qsp/fax/log -type f -name "1_*"); do


echo $faxroh | sed -e 's/1_1\(.*\)\.111/\1/'

echo $faxroh

done

das spuckt er richtig aus: c:/qls/qls/kln/Qsp/Fax/LOG/05014

nun hab ich es versucht für ein anders problem es abzuwandeln

for faxroh in $(find c:/qls/qls/kln/qsp/fax/log -type f -name "*.$$$"); do

und will dann die endung ".$$$" abschneiden damit ich es umbennen kann

aber er liest das schon gar nicht in die schleife

unabhängig davon wir dein sed-befehl es bestimmt nicht tun afür
 
ICH HABBBBBBBBBBBBBBBBBBBBBBBBSSSSS


for faxroh in $(find c:/qls/qls/kln/qsp/fax/log -type f -name "*.\$\$\$"); do


echo $faxroh | sed -e 's/\.\$\$\$/\1/'

echo $faxroh

done

das tut es !

heißt die 1 am ende eigentlich löschen ?
 
Was kommt für eine Fehlermeldung?

Unabhänigig davon rate ich streng ab irgendwelche Code-Schnipsel zu verwenden, wenn man sie nicht versteht...da isses schonmal aus Jux & Dollerei vorgekommen, dass sich jemand seine Festplatte formatiert hat!
 
wie schon gesagt!

es läuft ja jetzt...

ABERRRRR

wie bekomme ich den inhalt von:
echo $faxroh | sed -e 's/\.\$\$\$/\1/' in eine variable

hab schon mal was mit Export versucht, aber es klappt nicht!
 
...
for faxroh in $(find c:/qls/qls/kln/qsp/fax/log -type f -name "*.\$\$\$"); do


echo $faxroh | sed -e 's/\.\$\$\$/\1/'

echo $faxroh

done

das tut es !

heißt die 1 am ende eigentlich löschen ?

Vorschlag für Deinen Code:

Code:
find c:/qls/qls/kln/qsp/fax/log -type f -name '*.$$$' | while read faxroh; do
  echo ${faxroh%.'$$$'}
  echo $faxroh
done

Mit while read werden auch die Files erschlagen, die Leerzeichen im Namen haben. Das ${..}-Konstrukt ist bash-eigen. Schau einfach, ob's bei Dir klappt. Die \1 ist eine Backreferenz und entspricht dem ersten zwischen \(..\) gefundenen String. Da Du aber kein \(..\) hast, ist \1 leer und damit wird gelöscht. Dies ist also nicht das, was man eigentlich will. Dein sed-Befehl sollte also idealerweise lauten:

Code:
sed -e 's/\.\$\$\$//'

Bezüglich Deiner Variablen-Frage:

Code:
a=$(echo $a | sed ...)
 
SUPER !!! LÄUFT

hier das Ergebnis!

find c:/qls/qls/kln/qsp/fax/log -type f -name '*.$$$' | while read faxroh; do
echo ${faxroh%.'$$$'}
echo $faxroh

faxroh2=$(echo ${faxroh%.'$$$'})
echo vari
echo $faxroh2

export faxneu=$faxroh2'.fax'

echo $faxneu

mv $faxroh $faxneu

done


er sucht die $$$ dateine und renamed sie

Vielen Dank Xanti ind die anderen

brauchst du einen job ?
 

Ähnliche Themen

For Schleife in eine Variable(String) einlesen

Open-Xchange auf OpenSuse mit Commu. Installer - Compiler Fehler

Zurück
Oben