abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

    dnes 14:33 | Komunita

    Bylo rozhodnuto, že Red Hat Enterprise Linux 10, jehož vydání je plánováno na první pololetí 2025, bude už bez X serverů. Zůstane pouze Xwayland.

    Ladislav Hagara | Komentářů: 2
    včera 16:22 | Nová verze

    Mobilní Datovka, tj. svobodná aplikace pro přístup k datovým schránkám pro zařízení s operačním systémem iOS a Android, byla minulá týden vydána v nové verzi 2.0.0. Zásadně bylo zmodernizováno uživatelské rozhraní. Přibyla možnost přepínat aplikaci mezi světlým a tmavým režimem. Současně byl publikován rozhovor QaA: Projekt Datovka očima vývojářů.

    Ladislav Hagara | Komentářů: 8
    včera 13:22 | Nová verze

    Multiplatformní open source aplikace scrcpy (Wikipedie) pro zrcadlení obrazovky i audia připojeného zařízení se systémem Android na desktopu a umožňující ovládání tohoto zařízení z desktopu, byla vydána v nové verzi 2.3.

    Ladislav Hagara | Komentářů: 1
    včera 03:55 | Bezpečnostní upozornění

    Včera skončila upstream podpora PHP 8.0. Podporované verze jsou 8.1, 8.2 a 8.3.

    Ladislav Hagara | Komentářů: 0
    včera 03:22 | IT novinky

    Představen byl herní notebook TUXEDO Sirius 16 - Gen1 s 16,1palcovým displejem s rozlišením 2560 x 1440 pixelů, 8jádrovým CPU AMD Ryzen 7 7840HS a GPU AMD Radeon RX 7600M XT 8 GB. V konfiguraci si lze vybrat až 96 GB RAM. Hmotnost notebooku je 2,3 kg. Koupit jej lze s nainstalovaným TUXEDO OS nebo Ubuntu 22.04 LTS. Cena začíná na 1 699 eurech (41 500 korun).

    Ladislav Hagara | Komentářů: 17
    26.11. 13:11 | Nová verze

    Multimediální server a user space API PipeWire (Wikipedie) poskytující PulseAudio, JACK, ALSA a GStreamer rozhraní dospěl do verze 1.0.0.

    Ladislav Hagara | Komentářů: 26
    25.11. 22:55 | Komunita

    LibreOffice Viewer je zpět na Google Play. Byl tam již dříve, ale kvůli chybovosti byl v roce 2020 odstraněn. Pravidelně aktualizovaný LibreOffice Viewer lze instalovat také z F-Droidu.

    Ladislav Hagara | Komentářů: 1
    25.11. 18:55 | Nová verze

    Byla vydána OpenMandriva Lx 5.0 s kódovým názvem Iodine. Po více než roce a půl od předchozí stabilní verze 4.3. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 5
    25.11. 12:44 | Komunita

    Na čem aktuálně pracují vývojáři GNOME a KDE? Pravidelný přehled novinek i s náhledy aplikací v Týden v GNOME a Týden v KDE.

    Ladislav Hagara | Komentářů: 25
    25.11. 02:22 | Zajímavý software

    Ansel (GitHub) je program pro úpravu digitálních fotografií. Jedná se o fork Darktable. Autorem je Aurélien Pierre, bývalý vývojář Darktable.

    Ladislav Hagara | Komentářů: 56
    Používáte modální textový editor?
     (74%)
     (3%)
     (2%)
     (21%)
    Celkem 270 hlasů
     Komentářů: 8, poslední 16.11. 22:24
    Rozcestník

    Dotaz: Příkaz/script - Vyhledání a nahrazení slov (sed, grep, find)

    9.9.2015 23:58 Mr. Mrkev
    Příkaz/script - Vyhledání a nahrazení slov (sed, grep, find)
    Přečteno: 444×

    Dobrý den,

    mám dotaz ohledně vyhledání slov v různých textových dokumentech jedné složky. Lze sestavit příkaz nebo i více příkazů (.sh), které by dokázali vyhledat všechny textové soubory ve složce a ve všech nahradit určité slovo jiným slovem (jinými slovy), ale pozor to slovo/ta slova by bylo z jiného textového souboru?

    O co mně přesně jde:

    Kdybych měl více textových souborů s jedním stejným slovem (jinak pojemenovaný, ale stejný "mustr") a toto slovo bych chtěl v každém souboru zvlášť nahradit jiným slovem z druhého textového souboru, tak jak na to? Jelikož je to krkolomné, tak uvedu příklad:

    ***

    Např.: V 5 souborech je stejné slovo "word". Toto slovo bych chtěl nahradit v každém souboru zvlášť různými slovy z šestého souboru, kde by byla uložena takto:

    jedna

    dva

    tři

    čtyři

    pět

    Výsledek:

    // Původních 5 souborů tedy: ..... word .....

    // Upravené:

    1. soubor = .... jedna ....

    2. soubor = .... dva ....

    ....

    ***

    Prozatím jsem částečně nalezl a upravil tento příkaz, který funguje na nalezení a nahrazení jednoho slova přímo zadaným jedním slovem (textem), ale jak jsem psal, tak bych ho potřeboval "upravit"/nahradit/...

    find /cesta/do/adresáře -type f -print0 | xargs -0 sed -i 's|hledaný text|nový text|g'

    Varianty, které nefungují (prozatím jsem zkoušel jen nahradit 1 slovo 1 slovem z druhého souboru):

    // "file" - měl být soubor ten soubor s náhradním slovem

    // "22222" - jsem chtěl nahradit

    find ./ -type f -print0 | xargs -0 sed -i 's|22222|$(sed -n 1p file)|g'

    grep -rl '22222' ./ | xargs sed -i 's/22222/$(sed -n 1p file)/g'

    sed -e "s/22222/$(sed -n 1p file)/" soubor.txt

    Šlo by to nějak? Nebo si to už musím naprogramovat např. v C...? Sám bych byl raději, kdyby šel sestavit nějaký příkaz či script.

    Předem Vám děkuji za Vaše rady!

    S pozrdavem a přáním pěkného zbytku týdne

    Jirka


    Řešení dotazu:


    Odpovědi

    Jendа avatar 10.9.2015 05:07 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Příkaz/script - Vyhledání a nahrazení slov (sed, grep, find)
    i=1
    word="word"
    for f in soubory; do
      tgt=`head -n $i šestý | tail -n 1`
      sed -ire "s/$word/$tgt/g" "$f"
      i=$(( $i + 1 ))
    done
    (nezkoušeno)
    11.9.2015 10:40 Mr. Mrkev
    Rozbalit Rozbalit vše Re: Příkaz/script - Vyhledání a nahrazení slov (sed, grep, find)
    Děkuji, s mírnou úpravou jsem hledal přesně toto! Využívám a budu využívat dále + nabalovat další...
    jose17 avatar 10.9.2015 12:17 jose17 | skóre: 44 | blog: Joseho_blog | Bratislava
    Rozbalit Rozbalit vše Re: Příkaz/script - Vyhledání a nahrazení slov (sed, grep, find)
    v pythone trebars takto:
    #!/usr/bin/python
    import os, fileinput, re
    zdroj = open('/tmp/siesty.txt')
    
    for (koren, adresare, subory) in os.walk('adresar_so_subormi'):
         for subor in subory:
             print "menim",subor
             nahrada = zdroj.readline().rstrip()
             print "nahradim 'word' za",nahrada
             for riadok in fileinput.FileInput(os.path.join(koren,subor), inplace=1):
                 print re.sub('word',nahrada, riadok),
    
    Ja vim, on vi, ty nano!
    11.9.2015 10:41 Mr. Mrkev
    Rozbalit Rozbalit vše Re: Příkaz/script - Vyhledání a nahrazení slov (sed, grep, find)
    Také ti děkuji, ač využiju/vám předchozí řešení, tak tvé si také uložím. Třeba se časem bude hodit.

    Založit nové vláknoNahoru

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

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.