Portál AbcLinuxu, 15. července 2025 09:33


Dotaz: bash mazani nepovolenych retezcu

petka avatar 12.9.2014 23:11 petka | skóre: 25 | blog: heydax | Klasterec N/O
bash mazani nepovolenych retezcu
Přečteno: 305×
Odpovědět | Admin

Zdravim , mam malo casu a chtel bych poradit jak nejefektivneji v shellu zpracovat text tim , ze v nem smazu vsechna nepovolena slova podle predem pripraveneho seznamu .

Seznam je zformatovany a na kazdem radku se nachazi jedno nepovolene slovo . Zdrojem muze byt jakykoliv text .

Dopredu dekuju .

Ubuntu server - Asus E35M1​-M ​- AMD Hudson M1 , 2x Technisat Skystar2 , 2x 1GB Lan , WiFi mod AP ,vdr,mysql,apache2...
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

13.9.2014 01:56 Logik
Rozbalit Rozbalit vše Re: bash mazani nepovolenych retezcu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Udělej si z toho seznamu např. awkem sedovej skript, kterym proženeš ten text.

Řešení Ti sem dávat nebudu, od toho ten úkol dostáváš, by ses to naučil.
13.9.2014 02:18 Petr | skóre: 29
Rozbalit Rozbalit vše Re: bash mazani nepovolenych retezcu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Udelal bych to asi nejak takto: bash -c 'for x in seznam; do sed 's/`cat ${x}`//' -i text; done'. I kdyz ta substituce asi fungovat nebude, po tech pivech dnes mi to uz nemysli :)
petka avatar 13.9.2014 07:09 petka | skóre: 25 | blog: heydax | Klasterec N/O
Rozbalit Rozbalit vše Re: bash mazani nepovolenych retezcu

Cist for nebo while read line , me taky napadlo . Me napadlo v jednom cyklu zvladout cely text . Takhle budu muset pro kazde slovo protahnout cely soubor . Prijde mi to neefektivni .

Ubuntu server - Asus E35M1​-M ​- AMD Hudson M1 , 2x Technisat Skystar2 , 2x 1GB Lan , WiFi mod AP ,vdr,mysql,apache2...
13.9.2014 15:52 Petr | skóre: 29
Rozbalit Rozbalit vše Re: bash mazani nepovolenych retezcu
Snad jedine pole retezcu, ale to bych zmaknul spis v Ccku. Ale te kvadraticke slozitosti se asi moc vyhnout neda (nejsem programator, mozna to nekdo vymysli lip)..
13.9.2014 16:05 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: bash mazani nepovolenych retezcu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zkus se nechat inspirovat tímto:
echo "a b c a" |
    sed -e 's/a/Alfa/g; s/b/Bravo/g; s/c/Charlie/g'
Má to sice své mouchy (nahrazuje už nahrazené), ale mohlo by to posloužit.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
petka avatar 13.9.2014 19:38 petka | skóre: 25 | blog: heydax | Klasterec N/O
Rozbalit Rozbalit vše Re: bash mazani nepovolenych retezcu

To by slo , zkusim na tom zapracovat , co se da delat :-D

Ubuntu server - Asus E35M1​-M ​- AMD Hudson M1 , 2x Technisat Skystar2 , 2x 1GB Lan , WiFi mod AP ,vdr,mysql,apache2...
19.9.2014 16:37 Jan Vostrý
Rozbalit Rozbalit vše Re: bash mazani nepovolenych retezcu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nejefektivnější asi bude si nejdříve ten soubor s nepovolenými slovy zpracovat do automatu a tím pak nechat projít cenzurovaný text.
Jendа avatar 19.9.2014 16:47 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: bash mazani nepovolenych retezcu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud to má být fakt doslovně (e.g., pro text AAAAAACBCBBB a seznam nepovolených slov AC, AB, ho bude potřeba projít zjevně opakovaně), tak není úplně triviální úloha a asi si budeš muset nastudovat, jak funguje Aho-Corasick a pak bych to doporučil psán v něčem, co není shell :).

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.