Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

linux shell skripta - zamjena stringova

[es] :: Skript jezici :: linux shell skripta - zamjena stringova

[ Pregleda: 2373 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

milan82

Član broj: 35288
Poruke: 72
*.netcologne.de.



Profil

icon linux shell skripta - zamjena stringova25.02.2009. u 10:32 - pre 183 meseci
Pozdrav,

potrebna mi je skripta za zamjenu stringova, pseudo kod bi izgledao ovako:

za svaku datoteku s nastavkom .txt u nekom direktoriju (ima dosta datoteka),
parsiraj svaku red po red i nađi "nešto", tražim navodnike i ono unutar
sad to "nešto" treba zamijeniti sa nekim drugim stringom, npr. blabla, znači: "nešto" --> blabla
moguće je da u jednom redu ima potrebe za više zamjena (više "nešto", "drugo", itd.)
i bilo bi dobro pobrojiti koliko se puta pojavljuje npr. "nešto" u pojedinoj datoteci.

Mislim da nije neki problem, al sam u stisci s vremenom i malo sam "ispao" iz shell programiranja ..., nažalost.
Ne treba mi ukupno rješenje, dobrodošli su i prijedlozi za pojedine stavke.

 
Odgovor na temu

Jbyn4e

Član broj: 422
Poruke: 6049
*.yunix.co.rs.



+257 Profil

icon Re: linux shell skripta - zamjena stringova25.02.2009. u 12:25 - pre 183 meseci
"Pseudo" kod skripte:
Code:

for i in `ls *.txt`
do
cat $i | sed 's/sta/sta_zamena/g' | sed 's/nesto_drugo/nesto_drugo_zamena/g' > tmp.txt
mv tmp.txt $i
koliko=`cat $i| grep "nesto"| wc -l`
echo "Ima $koliko 'nesto' u $i"
done

Snaci ces se vec...

Treba li da objasnjavam?

Kad sve ostalo zakaže, pročitaj uputstvo...
 
Odgovor na temu

milan82

Član broj: 35288
Poruke: 72
*.netcologne.de.



Profil

icon Re: linux shell skripta - zamjena stringova25.02.2009. u 14:01 - pre 183 meseci
Super, hvala na odgovoru, ako zapnem, pitat cu;-)
 
Odgovor na temu

Jbyn4e

Član broj: 422
Poruke: 6049
*.yunix.co.rs.



+257 Profil

icon Re: linux shell skripta - zamjena stringova25.02.2009. u 15:23 - pre 183 meseci
No, samo jedno, sad vidim:
Code:

koliko=`cat $i| grep "nesto"| wc -l`

- nece bas "lepo" izbrojati koliko ima "nesto" vec broj linija u kojima se javlja "nesto". Ukoliko se "nesto" javlja vise puta u liniji, bice izbrojano samo jednom.


Kad sve ostalo zakaže, pročitaj uputstvo...
 
Odgovor na temu

uranium
Beograd

Član broj: 60097
Poruke: 543
93.86.46.*

Jabber: uranium@elitesecurity.org
ICQ: 324386953


+5 Profil

icon Re: linux shell skripta - zamjena stringova25.02.2009. u 16:47 - pre 183 meseci
dovoljno je samo dodati -o switch

dakle

koliko=`cat $i | grep -o "nesto"| wc -l`



izvod iz man grep

-o, --only-matching
Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.

ukoliko "nesto" nije regex, verovatno je efikasnije koristiti fgrep ... ( tj. grep -F )
Attempt all the problems. Those you can do, don't do. Do the ones you cannot.
 
Odgovor na temu

milan82

Član broj: 35288
Poruke: 72
*.netcologne.de.



Profil

icon Re: linux shell skripta - zamjena stringova26.02.2009. u 11:57 - pre 183 meseci
Hvala Jbyn4e & uranium

Ima jos jedna stvar, moguce je da imam u istoj liniji gdje je "nesto" neki string npr. XX (select) i to mi znaci da ne diram tu liniju i preskocim jos linija ispod; ispod je primjer; ove linije ne smijem dirati.

strSelect = "SELECT hist.OBJID, to_char(hist.X_SPRTT, 'dd.mm.yyyy') " & _
" FROM TABLE_SITE_PART sp " & _
",TABLE_X_TARIFPROP tp " & _
",TABLE_X_ALL_SITEPRT_TRFPROP hist "
 
Odgovor na temu

[es] :: Skript jezici :: linux shell skripta - zamjena stringova

[ Pregleda: 2373 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.