Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  Mitmes failis korraga andmete muutmine märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale. Teata moderaatorile
otsing:  
poocman
HV kasutaja
poocman

liitunud: 13.10.2004



Autoriseeritud ID-kaardiga

sõnum 26.10.2019 15:26:09 Mitmes failis korraga andmete muutmine vasta tsitaadiga

Kaustades ja alamkaustades on 5000 faili.
Vaja on muuta failide sisu, mille nimes on R või L.
Tuleks leida näiteks sellised read:
0124-M5-2260-1400
1225-M6-1015-1400
3023-M7-1005-1400

Vaja oleks lahutada sellest arvust 15, mis on enne -1400
Näite tulemus peaks olema:

0124-M5-2245-1400
1225-M6-1000-1400
3023-M7-990-1400

keegi oskaks ehk head nõu anda?


viimati muutis poocman 26.10.2019 15:52:37, muudetud 1 kord
Kommentaarid: 55 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 50
tagasi üles
vaata kasutaja infot saada privaatsõnum
Renka
HV Guru
Renka

liitunud: 01.04.2002



Autoriseeritud ID-kaardiga

sõnum 26.10.2019 15:46:34 vasta tsitaadiga

loed failide listi massiivi
itereerid üle selle massiivi
parsed failinime omale sobivateks tükkideks. Teed oma kalkulatsiooni. Paned tükid tagasi failinimeks ja teed rename

profit

_________________
There is no place like 127.0.0.1

Vaata kasutaja äripakkumisi
PT: Frontend arendaja - Svelte / SvelteKit 0512
Kommentaarid: 71 loe/lisa Kasutajad arvavad:  :: 2 :: 1 :: 61
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
poocman
HV kasutaja
poocman

liitunud: 13.10.2004



Autoriseeritud ID-kaardiga

sõnum 26.10.2019 15:53:41 vasta tsitaadiga

Renka, väljendasin ennast valesti, vaja oleks muuta faili sisu, mille nimes on R või L. Viga postituses paranadatud.
Kommentaarid: 55 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 50
tagasi üles
vaata kasutaja infot saada privaatsõnum
Renka
HV Guru
Renka

liitunud: 01.04.2002



Autoriseeritud ID-kaardiga

sõnum 26.10.2019 16:34:24 vasta tsitaadiga

aga see ei muuda mu vastust ju. Saad samamoodi ju faili sisu ka muuta.
_________________
There is no place like 127.0.0.1

Vaata kasutaja äripakkumisi
PT: Frontend arendaja - Svelte / SvelteKit 0512
Kommentaarid: 71 loe/lisa Kasutajad arvavad:  :: 2 :: 1 :: 61
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
LKits
HV Guru
LKits

liitunud: 06.09.2007




sõnum 26.10.2019 18:03:24 vasta tsitaadiga

Loop ja regex.

EDIT: Ehk mina loopiksin kõik failide pealkirjad läbi ning vastavalt tingimusele kas muudaks või ei muudaks faili.
Sisu saab lihtsalt regex-ga massiivi, seda ka gruppide kaupa. Näiteks:
https://regex101.com/r/JuLQXm/1

_________________
itLahendused - Arvutite remont ja hooldus, veebilehtede loomine, soodne veebimajutus. Võta ühendust! Tel: +372 555 268 97 ja e-post info@itlahendused.ee
Kommentaarid: 13 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 13
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
alfreedo
HV vaatleja

liitunud: 20.06.2010




sõnum 26.10.2019 19:48:25 vasta tsitaadiga

1.Mis tüüpi on failid?(doc, txt, xls, csv, ....)
2.Millised on täpsemalt failnimed?(aaabRdd, 12.05.2010R, L uuring, ....)
3.Millised on teised read failis ehk mille poolest vajalikud read erinevad teistest faili ridadest? (Muuda read mille lõpus on konstant 1400?)
4.Kui suured mahult failid on? (VBA-s sõltub sellest suuresti töötluse aeg. Failid 100MB ja enam MB vbl töödelda mingi muu programmiga)

Kirjutad mingi sellise makro: Käi läbi kausta "Poldid ja Mutrid" kõik failid ja alamkustad, ava iga fail mille nimes on R või L, loe läbi fail rida realt ja 1400 olemasolul rea lõpus muuda eelnevat suurust -15võrra.
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
klf
HV vaatleja

liitunud: 08.03.2005




sõnum 26.10.2019 20:20:28 vasta tsitaadiga

Tekstifailide mudimiseks sobiv tööriist on näiteks perl. Ühe kataloogi puhul:
% perl -pi -e 's/\d+(?=-1400)/$&-15/e' *[RL]*
Kommentaarid: 10 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 10
tagasi üles
vaata kasutaja infot saada privaatsõnum
Renka
HV Guru
Renka

liitunud: 01.04.2002



Autoriseeritud ID-kaardiga

sõnum 26.10.2019 20:50:02 vasta tsitaadiga

klf, tegelikult vahet ei ole mis tööriistaga seda teha. Mõistlik on kasutada midagi sellist mida juba kasutada oskad.

Mu eelpool kirjeldatud loogika töötab igas keeles. Implementatsioon jääb ainult enda teha.

_________________
There is no place like 127.0.0.1

Vaata kasutaja äripakkumisi
PT: Frontend arendaja - Svelte / SvelteKit 0512
Kommentaarid: 71 loe/lisa Kasutajad arvavad:  :: 2 :: 1 :: 61
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Etz
HV Guru
Etz

liitunud: 27.01.2005



Autoriseeritud ID-kaardiga

sõnum 26.10.2019 21:26:45 vasta tsitaadiga

NATAS999, milleks minna raketiga poodi piima järele?

Selle teeb niisama Bashis/Powershellis ära...ja poole tunniga... icon_rolleyes.gif

_________________
...life is random...so am I...
So, there is a fan. Time to grab your sh*t, gentlemen!
Kommentaarid: 223 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 192
tagasi üles
vaata kasutaja infot saada privaatsõnum
poocman
HV kasutaja
poocman

liitunud: 13.10.2004



Autoriseeritud ID-kaardiga

sõnum 26.10.2019 21:41:45 vasta tsitaadiga

alfreedo,
1. faili tüüp txt
2. Faili nimedeks R või L või 8L või L7 või LD või midagi analoogset
3. Faili reas on kas M5 või M6 või M7
4. Failid on väiksed 10-20 kB

klf,
analoogset lahendust otsingi
Kommentaarid: 55 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 50
tagasi üles
vaata kasutaja infot saada privaatsõnum
napoleon
Unknown virus
napoleon

liitunud: 08.12.2008



Autoriseeritud ID-kaardiga

sõnum 26.10.2019 22:56:36 vasta tsitaadiga

NATAS999 kirjutas:
kõige lihtsam, võta google ette ja pusi c++'ga vastav tööriist valmis. kui natukenegi ajusid on, siis max nädal iga õhtu või töö kõrvalt pusimisega peaks tehtav olema.


Nagu Renka ütles, kõik oleneb sellest mis tööriist käepärane on. Ei lähe c++ kasutades ka nädal, saab selle abil ka max paari tunniga kui eelnev kogemus vastava keelega on icon_wink.gif
Kommentaarid: 76 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 59
tagasi üles
vaata kasutaja infot saada privaatsõnum
NATAS999
HV Guru

liitunud: 02.04.2007




sõnum 26.10.2019 22:59:15 vasta tsitaadiga

napoleon kirjutas:
NATAS999 kirjutas:
kõige lihtsam, võta google ette ja pusi c++'ga vastav tööriist valmis. kui natukenegi ajusid on, siis max nädal iga õhtu või töö kõrvalt pusimisega peaks tehtav olema.


Nagu Renka ütles, kõik oleneb sellest mis tööriist käepärane on. Ei lähe c++ kasutades ka nädal, saab selle abil ka max paari tunniga kui eelnev kogemus vastava keelega on icon_wink.gif
ma eeldasin, et ei ole eelnevat kogemust, kuna vastasel juhul ei tuleks siia muret kurtma, vaid oleks paari tunniga lahenduse valmis nokkind. ma ise oma miniatuurse c++ kogemusega ei julgeks öelda et selle ülesandega paari tunni või päevaga valmis saaks. oleneb kõik muidugi õppimisvõimest ja ajuehitusest
Kommentaarid: 41 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 39
tagasi üles
vaata kasutaja infot saada privaatsõnum
RassK
HV Guru
RassK

liitunud: 17.01.2007



Autoriseeritud ID-kaardiga

sõnum 27.10.2019 13:11:13 vasta tsitaadiga

Omades kogemust mõne advanced programmeerimiskeelega poleks ilmselt tõesti küsimust olnud kuna lähteülesanne pole eriti keeruline.
Windowsi puhul on keskkonnad ka juba paigaldatud, et mingi scriptijupike ära teha nt Powershell ISE. Kui selle syntax ei sobi, siis nt Python (või muu taoline lihtne keel) vaja eraldi alla laadida. Muud C++'d jne on algajatele juba tuumafüüsika.
Kommentaarid: 112 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 98
tagasi üles
vaata kasutaja infot saada privaatsõnum
Dealer14
HV vaatleja

liitunud: 09.02.2004




sõnum 27.10.2019 23:29:50 vasta tsitaadiga

Hei poocman,

Tegin powershellis alguse valmis, hetkel lõpetada ei jõua. Hetkel kood peaks leidma kõik muutmist vajavad failid. Sinu nimekirjast siis 1. ja 2.

$Directory muutujaks pead panema algkausta

Eeldusel, et kasutad W7 ja uuemat.

Windows + R -> Run: "Powershell"



Clear-Host
$Directory = "E:\" # Pohikaust
$Filetype = "*.txt" # Failituup
Get-ChildItem -path $Directory -Filter $Filetype -Recurse  | # votab failid ka alamkaustadest
where {($_.Name -like "*R*" -or $_.Name -like "*L*")}| # kontroll kas nimes on L voi R
Sort-Object Name | Format-Table Name, Fullname -auto
Kommentaarid: 22 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 22
tagasi üles
vaata kasutaja infot saada privaatsõnum
poocman
HV kasutaja
poocman

liitunud: 13.10.2004



Autoriseeritud ID-kaardiga

sõnum 28.10.2019 22:24:31 vasta tsitaadiga

Tänu juhendamisele jõdusin sellise asjani:

find  -type f \( -iname "*L*.txt" -o -iname "*R*.txt" \)  -exec perl -pi -e 's/(?<=-M5-)\d+|(?<=-M6-)\d+|(?<=-M7-)\d+/$&-15/e' "{}"  \;


Tundub loogiline?

Dealer14, windowsis töötav lahendus oleks ilmselt mugavam thumbs_up.gif
Kommentaarid: 55 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 50
tagasi üles
vaata kasutaja infot saada privaatsõnum
LKits
HV Guru
LKits

liitunud: 06.09.2007




sõnum 28.10.2019 23:42:14 vasta tsitaadiga

Tundub loogiline, aga regex on kohmakas. Iseenesest, kui nii soovid, siis miks mitte.
Saaks tsipa optimeerida:
(?<=-M[5-7]-)\d+


https://regex101.com/r/34vCK1/1

_________________
itLahendused - Arvutite remont ja hooldus, veebilehtede loomine, soodne veebimajutus. Võta ühendust! Tel: +372 555 268 97 ja e-post info@itlahendused.ee
Kommentaarid: 13 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 13
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
poocman
HV kasutaja
poocman

liitunud: 13.10.2004



Autoriseeritud ID-kaardiga

sõnum 29.10.2019 08:50:54 vasta tsitaadiga

Tänud thumbs_up.gif
Kommentaarid: 55 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 50
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  Mitmes failis korraga andmete muutmine
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.