[ vidonk @ 24.05.2019. 14:30 ] @
Pozdarav forumaši,
nisam našao odgovarajući forum za moje pitanje pa sam ga odlučio postaviti ovdje jer koristim linux.
Dakle imam fajl sa listom riječi pa bih volio da uklonim riječi koje imaju 2 ili više istih slova jedano za drugim, na pr imam
Code:

forum
topic
reklamu
imee
sugestija
sliccicca

izlazni fajl bi trebalo da bude
Code:

forum
topic
reklamu
sugestija

Kako mogu ovo da postignem u linuxu ?
Srdačan pozdrav
[ djoka_l @ 24.05.2019. 15:40 ] @
sed -E '/(.)\1+/d' <inputfile >outputfile


https://www.gnu.org/software/s...rences-and-Subexpressions.html

[Ovu poruku je menjao djoka_l dana 24.05.2019. u 16:50 GMT+1]
[ vidonk @ 25.05.2019. 11:53 ] @
Citat:
djoka_l
sed -E '/(.)\1+/d' <inputfile >outputfile


https://www.gnu.org/software/s...rences-and-Subexpressions.html

[Ovu poruku je menjao djoka_l dana 24.05.2019. u 16:50 GMT+1]


Odlično hvala
[ Tpojka @ 25.05.2019. 12:48 ] @
Pripazi se ako ti je bitno da to uradiš samo za alpha characters, da ne izbaciš neplanski `topic22`.
U tom slučaju (.) bi trebalo zamijeniti sa [:alpha:]
Evo i ostalih regulativa.
[ blaki @ 17.07.2019. 16:27 ] @
Citat:
Tpojka: Pripazi se ako ti je bitno da to uradiš samo za alpha characters, da ne izbaciš neplanski `topic22`.
U tom slučaju (.) bi trebalo zamijeniti sa [:alpha:]
Evo i ostalih regulativa.



Odgovor od člana "djoka_I" funkcioniše besprekorno i u pravu ste izostavlja i reč gde se pojavljuje cifra, međutim ovo Vaše rešenje apsolutno ne radi u "Bash-u"?
[ Panta_ @ 18.07.2019. 06:26 ] @
Treba samo tačka (koja predstavlja bilo koji karakter) da se zameni sa [[:alpha:]] klasom karakera, zagrade () ostaju da zabeleže karakter koji odgovara regularnom izrazu u numerisanu grupu, koja može ponovo da se upotrebi sa \broj, ili u ovom slučaju \1 kao prva grupa. Dakle, pomenuti regex traži bilo koji karakter praćen sa jednim ili više (+) istim tim karakterom.
Code:
sed -E '/([[:alpha:]])\1+/d' <inputfile >outputfile

Kao što možeš da vidiš iz primera, koristimo [] da definišemo set karaktera, u ovom slučaju alfabetskih. Pomoću [] možemo da definišemo i opseg karaktera, na primer:
Code:
sed -E '/([a-zA-Z])\1+/d'  <inputfile >outputfile

Mala i velika slova od a do z, slično kao [:alpha:].
[ blaki @ 18.07.2019. 19:15 ] @
Citat:
Panta_: Treba samo tačka (koja predstavlja bilo koji karakter) da se zameni sa [[:alpha:]] klasom karakera, zagrade () ostaju da zabeleže karakter koji odgovara regularnom izrazu u numerisanu grupu, koja može ponovo da se upotrebi sa \broj, ili u ovom slučaju \1 kao prva grupa. Dakle, pomenuti regex traži bilo koji karakter praćen sa jednim ili više (+) istim tim karakterom.
Code:
sed -E '/([[:alpha:]])\1+/d' <inputfile >outputfile

Kao što možeš da vidiš iz primera, koristimo [] da definišemo set karaktera, u ovom slučaju alfabetskih. Pomoću [] možemo da definišemo i opseg karaktera, na primer:
Code:
sed -E '/([a-zA-Z])\1+/d'  <inputfile >outputfile

Mala i velika slova od a do z, slično kao [:alpha:].


To je to. Radi i jedan i drugi primer. Hvala na odgovoru.