Forum » Programiranje » [UNIX-shell] uporaba AWK
[UNIX-shell] uporaba AWK
abrezo ::
V shell programiranju sem razmeroma nov, zato sem se srečal z manjšo težavo.
Primer:imam ukaz
ki poda naslednji rezultat
mv ./Podatki/Apodatki/A0030053.A98;1 ./Podatki/Apodatki/A0030053.A98;1_2010-03-24_13:49
mv ./Podatki/Apodatki/A0100053.A98;1 ./Podatki/Apodatki/A0100053.A98;1_2010-03-24_13:49
mv ./Podatki/Apodatki/A0130053.A98;1 ./Podatki/Apodatki/A0130053.A98;1_2010-03-24_13:49
mv ./Podatki/Apodatki/A0200053.A98;1 ./Podatki/Apodatki/A0200053.A98;1_2010-03-24_13:49
mv ./Podatki/Apodatki/A0230053.A98;1 ./Podatki/Apodatki/A0230053.A98;1_2010-03-24_13:49
mv ./Podatki/Apodatki/A0300053.A98;1 ./Podatki/Apodatki/A0300053.A98;1_2010-03-24_13:49
Kako lahko uporabim te parametre $8, $7 ..., da jih vzamem v neko funkcijo kjer jim spemenim obliko
npr:
Rad bi namreč spremenil PATH, kamor bi premaknil datoteke. Željen rezultat bi tako npr bil.
mv ./Podatki/Apodatki/A0030053.A98;1 ./TESTDIR/A0030053.A98;1_2010-03-24_13:49
mv ./Podatki/Apodatki/A0100053.A98;1 ./TESTDIR/A0100053.A98;1_2010-03-24_13:49
mv ./Podatki/Apodatki/A0130053.A98;1 ./TESTDIR/A0130053.A98;1_2010-03-24_13:49
mv ./Podatki/Apodatki/A0200053.A98;1 ./TESTDIR/A0200053.A98;1_2010-03-24_13:49
mv ./Podatki/Apodatki/A0230053.A98;1 ./TESTDIR/A0230053.A98;1_2010-03-24_13:49
mv ./Podatki/Apodatki/A0300053.A98;1 ./TESTDIR/A0300053.A98;1_2010-03-24_13:49
Hvala!
Primer:imam ukaz
ls -ld -1 `find . -name "A*" -print` |awk 'NR>1{print "mv ", $8, $8"_"$6"_"$7}'
ki poda naslednji rezultat
mv ./Podatki/Apodatki/A0030053.A98;1 ./Podatki/Apodatki/A0030053.A98;1_2010-03-24_13:49
mv ./Podatki/Apodatki/A0100053.A98;1 ./Podatki/Apodatki/A0100053.A98;1_2010-03-24_13:49
mv ./Podatki/Apodatki/A0130053.A98;1 ./Podatki/Apodatki/A0130053.A98;1_2010-03-24_13:49
mv ./Podatki/Apodatki/A0200053.A98;1 ./Podatki/Apodatki/A0200053.A98;1_2010-03-24_13:49
mv ./Podatki/Apodatki/A0230053.A98;1 ./Podatki/Apodatki/A0230053.A98;1_2010-03-24_13:49
mv ./Podatki/Apodatki/A0300053.A98;1 ./Podatki/Apodatki/A0300053.A98;1_2010-03-24_13:49
Kako lahko uporabim te parametre $8, $7 ..., da jih vzamem v neko funkcijo kjer jim spemenim obliko
npr:
ls -ld -1 `find . -name "A*" -print` |awk 'NR>1{print "mv ", $8, $(spremeni $8)"_"$6"_"$7}'
Rad bi namreč spremenil PATH, kamor bi premaknil datoteke. Željen rezultat bi tako npr bil.
mv ./Podatki/Apodatki/A0030053.A98;1 ./TESTDIR/A0030053.A98;1_2010-03-24_13:49
mv ./Podatki/Apodatki/A0100053.A98;1 ./TESTDIR/A0100053.A98;1_2010-03-24_13:49
mv ./Podatki/Apodatki/A0130053.A98;1 ./TESTDIR/A0130053.A98;1_2010-03-24_13:49
mv ./Podatki/Apodatki/A0200053.A98;1 ./TESTDIR/A0200053.A98;1_2010-03-24_13:49
mv ./Podatki/Apodatki/A0230053.A98;1 ./TESTDIR/A0230053.A98;1_2010-03-24_13:49
mv ./Podatki/Apodatki/A0300053.A98;1 ./TESTDIR/A0300053.A98;1_2010-03-24_13:49
Hvala!
Popcek ::
Ce pogledas malo man awk, vidis, da imas na razpolago ze nekaj vgrajenih funkcij. Ena izmed njih je "sub",
ki bi jo lahko uporabil v tvojem primeru.
naprimer:
ki bi jo lahko uporabil v tvojem primeru.
naprimer:
... printf "mv" $8;sub("/Podatki/Apodatki/","/TESTDIR/",$8);print $8"_"....
abrezo ::
Ja, ampak niso zmeraj /Podatki/Apodatki/, so potem še /Podatki/Ypodatki/, /Podatki/20102503/Apodatki/...se pravi niso zmeraj enaki stringi v pogoju...
Tako da če maš (oz kdorkoli) še kakšno idejo, se priporočam.
Tako da če maš (oz kdorkoli) še kakšno idejo, se priporočam.
Popcek ::
Ja na zalost nimam 6. cuta, da bi natancno vedel kaj ti zelis...oziroma kasno strukturo poddirektorijev imas.
Upam, da si ze slisala za REGEX...(prej se jih zakapiras prej mas lepse zivljenje).
Drgac pa mal vec napis....resitev je mnogo....
Upam, da si ze slisala za REGEX...(prej se jih zakapiras prej mas lepse zivljenje).
Drgac pa mal vec napis....resitev je mnogo....
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | excel (preverjanje istih/e besed/e v celicah)Oddelek: Pomoč in nasveti | 829 (757) | prtenjam |
» | Finska (izkušnje)Oddelek: Loža | 5485 (3752) | _dragon_ |
» | programiranje krožek(pomoč)Oddelek: Pomoč in nasveti | 2767 (1755) | Marat |
» | Ukrajinci zaprli priljubljeno stran s torrentiOddelek: Novice / Avtorsko pravo | 15733 (12835) | kitaj |
» | Wal-mart prenosnikiOddelek: Novice / Ostale najave | 3308 (3308) | moj_nick |