Jabuk
SED in GREP iskanje po besedilih
Stevie Jobs

Stevie Jobs

Pridružen/a: 10.11.2008
Prispevkov: 9222
Kraj: LJ
Moški

Poglej uporabnikov profil
Prispevek: #1   Objavljeno 22.10.2010 10:11:48
SED in GREP iskanje po besedilih
Odgovori s citatom Dodaj uporabnika na seznam ignoriranih
Rad bi s pomočjo GREP sistema naredil ukaz, ki bi mi v filu poiskal šumnike in jih zamenjal v smislu č = cc, š = ss, itd.

Zanima me, če se to sploh da.
Če ma kdo kaj pojma o tem, bi bil zelo hvaležen...
Lahko tudi z ukazom preko terminala.

Nekaj sem probaval sam, a ne pridem kaj daleč.
-----

Včasih (še na sistemu 9) sem za to uporabljal eno enostaveno aplikacijo AddStrip, ki pa je nimam več. Stvar je bila tako trivialna, da si sam vrgel file na ikono in dobil nov file z zamenjanimi znaki kot si jih nastavil.
iPhone Developer

iPhone Developer

Pridružen/a: 19.09.2008
Prispevkov: 10564
Ni navedeno

Poglej uporabnikov profil
Prispevek: #2   Objavljeno 22.10.2010 10:32:28
Odgovori s citatom Dodaj uporabnika na seznam ignoriranih
Če hočeš, ti lahko na hitro naredim en command line utility, ki bo to funkcijo opravljal... grep mi pa ni tako domač Smile
iPhone Developer

iPhone Developer

Pridružen/a: 19.09.2008
Prispevkov: 10564
Ni navedeno

Poglej uporabnikov profil
Prispevek: #3   Objavljeno 22.10.2010 11:17:20
Odgovori s citatom Dodaj uporabnika na seznam ignoriranih
No evo... sem nekaj spacal.

Zadevo dobiš tukaj: http://dl.dropbox.com/u/8261657/preimenuj.zip

Kako se uporablja? Programček premakneš v mapo, kjer želiš preimenovati datoteke... potem ga pa kličeš na ta način, kot je prikazano spodaj...

Pozor! Aplikacija bo glede na tvoja navodila preimenovala vse datoteke znotraj mape, kjer se nahaja!

Število "iz" in "v" argumentov je lahko poljubno (mora pa biti iz in v argumentov enako).

Koda:
Mac-Mini:Debug mikrohard$ ls -l
total 2192
-rw-r--r--@ 1 mikrohard  staff  193504  1 sep 22:49 ćčlčsdfkš.jpg
-rw-r--r--  1 mikrohard  staff  357960  3 avg 10:37 ćklgrećhdfhžš.jpg
-rw-r--r--  1 mikrohard  staff  124904  2 sep 12:09 ćšpkgfdspććšđđšpč.jpg
-rwxr-xr-x  1 mikrohard  staff   13728 22 okt 12:10 preimenuj
-rw-r--r--@ 1 mikrohard  staff   58130  2 avg 00:54 šfpdsojgsdgsćđžć.jpg
-rw-r--r--  1 mikrohard  staff  238175  3 avg 10:45 voijbdfsn.jpg
Mac-Mini:Debug mikrohard$ ./preimenuj -iz č ž š -v cc zz ss
2010-10-22 12:12:39.507 preimenuj[14034:903] Preimenovalec datotek!
2010-10-22 12:12:39.510 preimenuj[14034:903] Iz argumenti: 3 V argumenti: 3
2010-10-22 12:12:39.514 preimenuj[14034:903] Našel sem 5 datotek!
2010-10-22 12:12:39.515 preimenuj[14034:903] Preimenujem ćčlčsdfkš.jpg v ćcclccsdfkss.jpg
2010-10-22 12:12:39.518 preimenuj[14034:903] Preimenujem ćklgrećhdfhžš.jpg v ćklgrećhdfhzzss.jpg
2010-10-22 12:12:39.519 preimenuj[14034:903] Preimenujem ćšpkgfdspććšđđšpč.jpg v ćsspkgfdspććssđđsspcc.jpg
2010-10-22 12:12:39.520 preimenuj[14034:903] Preimenujem šfpdsojgsdgsćđžć.jpg v ssfpdsojgsdgsćđzzć.jpg
2010-10-22 12:12:39.521 preimenuj[14034:903] Preimenoval sem 4 datotek.
Mac-Mini:Debug mikrohard$ ls -l
total 2192
-rw-r--r--@ 1 mikrohard  staff  193504  1 sep 22:49 ćcclccsdfkss.jpg
-rw-r--r--  1 mikrohard  staff  357960  3 avg 10:37 ćklgrećhdfhzzss.jpg
-rw-r--r--  1 mikrohard  staff  124904  2 sep 12:09 ćsspkgfdspććssđđsspcc.jpg
-rwxr-xr-x  1 mikrohard  staff   13728 22 okt 12:10 preimenuj
-rw-r--r--@ 1 mikrohard  staff   58130  2 avg 00:54 ssfpdsojgsdgsćđzzć.jpg
-rw-r--r--  1 mikrohard  staff  238175  3 avg 10:45 voijbdfsn.jpg

Stevie Jabuk

Stevie Jabuk

Pridružen/a: 16.10.2009
Prispevkov: 211
Moški

Poglej uporabnikov profil
Prispevek: #4   Objavljeno 22.10.2010 11:34:25
Re: SED in GREP iskanje po besedilih
Odgovori s citatom Dodaj uporabnika na seznam ignoriranih
macata je napisal/a:
Rad bi s pomočjo GREP sistema naredil ukaz, ki bi mi v filu poiskal šumnike in jih zamenjal v smislu č = cc, š = ss, itd.

A bi rad spremenil šumnike v vsebini datoteke ali v imenu datoteke?

Če bi res rad uporabil sed, ti morda lahko pomaga sledeč primerček:
jupiter:~ dejan$ echo "čevapčiči, žar, še" | sed -e 's/č/cc/g' -e 's/š/ss/g' -e 's/ž/zz/g'
ccevapccicci, zzar, sse

Kot vidiš, sed-u samo nanizas regex kaj hočeš zamenjati s čim. Ker sem dodal flag /g, ti sed dela zamenjave globalno cez celotno datoteko, tako da potreba po grep odpade. Lahko naredis recimo tako:
cat bla.txt | sed -e 's/č/cc/g' -e 's/š/ss/g' -e 's/ž/zz/g'

Seveda to moras razsiriti se za velike crke.
Stevie Jobs

Stevie Jobs

Pridružen/a: 10.11.2008
Prispevkov: 9222
Kraj: LJ
Moški

Poglej uporabnikov profil
Prispevek: #5   Objavljeno 22.10.2010 11:57:23
Odgovori s citatom Dodaj uporabnika na seznam ignoriranih
Hvala obema (nkol pozabu) Smile

Sem že nekaj časa tole premleval, a se nisem zbrihtal, da bi še na forumu vprašal.

THX še enkrat, mi bo prišlo zlo prav.
Stevie Jobs

Stevie Jobs

Pridružen/a: 10.11.2008
Prispevkov: 9222
Kraj: LJ
Moški

Poglej uporabnikov profil
Prispevek: #6   Objavljeno 22.10.2010 16:24:48
Odgovori s citatom Dodaj uporabnika na seznam ignoriranih
Sem že uporabil tale SED ukaz in dela točno to kar rabim.

Koda:
cat proba.txt | sed -e 's/č/~/g' -e 's/š/{/g' -e 's/ž/`/g' -e 's/Č/^/g' -e 's/Š/[/g' -e 's/Ž/`/g' > proba2.txt


Zdaj me pa grize še ena stvar:
Kako bi naredil stvar bolj avtomatsko.

Torej ne v terminalu, ampak direktno v Finderju. Recimo da bi bila ena ikonca (app, script, automator... karkoli pač) na katero bi vrgel file, zadeva bi pa izvedla SED ukaz, ki bi ga lahko poljubno spreminjal.

Sem nekaj bral da lahko te ukaze vključiš v Automator (pa ne vem niti, kje bi se lotil) ... Sad
Stevie Jabuk

Stevie Jabuk

Pridružen/a: 16.10.2009
Prispevkov: 211
Moški

Poglej uporabnikov profil
Prispevek: #7   Objavljeno 22.10.2010 22:28:56
Odgovori s citatom Dodaj uporabnika na seznam ignoriranih
Lahko probas z AppleScriptom:
* odpri AppleScript Editor
* vpisi
on open files_
set command_ to "sed -e 's/č/cc/g' -e 's/š/ss/g' -e 's/ž/zz/g'"
repeat with file_ in files_
set pfile_ to POSIX path of file_
do shell script "cat " & pfile_ & "|" & command_ & " > " & pfile_ & "-2"
end repeat
end open
* klikni Compile (seveda si lahko pred tem modificiras sed komando po lastni zelji)
* shrani kot Application nekam na Desktop (lahko si pol to preneses tudi v Dock, ce zelis)
* sedaj lahko kaksne koli datoteke zagrabis v Finderju in jih vrzes na to ikoncu (tudi vec hkrati). To ti bo v istem direktoriju, kot je original, naredilo datoteko, ki ima na koncu -2, vsebina pa bo imela zamenjane sumnike s cimer pac zelis.
Stevie Jobs

Stevie Jobs

Pridružen/a: 10.11.2008
Prispevkov: 9222
Kraj: LJ
Moški

Poglej uporabnikov profil
Prispevek: #8   Objavljeno 23.10.2010 15:38:13
Odgovori s citatom Dodaj uporabnika na seznam ignoriranih
uf bom probal. mi je pa apple script zlo spanska vas.

thx javim kaj mi je ratal.
Ne moreš dodajati novih tem
Ne moreš odgovarjati na teme
Ne moreš urejati svojih prispevkov
Ne moreš brisati svojih prispevkov
Ne moreš glasovati v anketi
Pokaži sporočila:
Pojdi na:
Jabuk.si Vsa vsebina spletne strani je last Jabuk.si in njegovih članov. © 2004 - 2020 Jabuk.si Kontakt Kontakt   Domov Domov   Na vrh strani Na vrh strani