Több szövegfájlban ugyanaz a módosítás.

Kezdőlap Fórumok Programozás Több szövegfájlban ugyanaz a módosítás.

10 bejegyzés megtekintése - 1-10 / 19
  • Szerző
    Bejegyzés
  • #2050094
    lada2105
    Felhasználó

      Tedd így:

      for i in *.htm
      do
      sed ‘s/styles.css/styles2.css/’ „$i.htm” > „$i.htm”
      done

      így az ” jel miatt megmaradnak a fájlokban a space-k ha véletlenül raktál és minden felülíródik.
      Elméletileg müködnie kell, nekem egy feliratfájlnál hasonló módszerrel tökéletesen ment.

      Lehet a .htm nem kell majd
      szóval így:

      for i in *.htm
      do
      sed ‘s/styles.css/styles2.css/’ „$i” > „$i”
      done

      Próba szerencse 🙂

      #2050095
      AMD486
      Felhasználó

        hááát…
        A sed soronként olvas. Tehát a scriptedben fájl elsõ sorát beolvassa, átalakítja, és a „>” miatt törli és új fájlt kezd a már átalakított elsõ sorral….

        #2050096
        msandor
        Felhasználó

          az én verzióm:

          #!/bin/sh

          # kigyujtes htmlista fajlba

          find . -type f -name ‘*.html’ > htmlista

          # atnezzuk az osszes fajlt
          for i in `cat htmlista`; do

          # lecsereljuk a regi cimet ujra es atmeneti allomanyba irjuk
          cat „$i” | sed s/a_cserélendõ_szöveg/az_új_szöveg/g > atmeneti

          # atnevezzuk az atmeneti fajlt az eredetire
          mv atmeneti „$i”
          done

          # toroljuk a segedallomanyokat
          rm htmlista

          nekem bevált, de azért teszteld le egy másolatmappában…

          #2050097
          lada2105
          Felhasználó

            Hát nem tom… nekem így müködött tökéletesen, úgyhogy akinek nem inge ne használja :poketoungeb:
            🙂

            legfeljebb >> -el kell irányítani egy fájlba és kész.
            nem kell túlbonyolítani…

            #2050098
            AMD486
            Felhasználó

              „>>” esetén pedig a feldolgozott anyag mögé írja a változtatott sorokat, aztán (nem próbáltam) lehet hogy ezeket is elkezdi feldolgozni, szal…
              Tudom, a Linux olyan király, hogy a végtelen ciklust is 5 perc alatt végrehajtja 😀

              #2050099
              lada2105
              Felhasználó

                Jó, ok. Megadom magam. Te vagy az erösebb 🙂
                Akkor nekem full special gépem és Linuxom van, mert akkor is így csináltam meg a feliratot…  :poketoungeb:

                Remélem azért megtaláljátok a megoldást
                Sok sikert!

                #2050100
                ds
                Felhasználó
                  AMD486 wrote:
                  A szüneteket pedig elõbb szedd le MINDEN fájlnévbõl, mert fölöslegesen dagasztja a scriptet a szünetes fájlnevek feldolgozása. (különben nem nagy cucc a dolog)
                  hááát
                  ls
                  betuk_brailleszamaik  braille  he l o  kezikonyv  menurendszer  menu_szavak
                  for i in *;do echo „$i”;done
                  „betuk_brailleszamaik”
                  „braille”
                  „he l o”
                  „kezikonyv”
                  „menurendszer”
                  „menu_szavak”

                  tehát a for jó, csak az echo nem
                  a sed kimenetének átirányítása ugyanarra a fájlra szintén nem jó ötlet

                  #2050101
                  Baki
                  Felhasználó

                    Egyik sem mûködik 🙁

                    Ez törli az egész tartalmat a fájlból:

                    Code:
                    for i in *.htm
                    do
                    sed ‘s/styles.css/styles2.css/’ „$i” > „$i”
                    done

                    Ez nem módosítja a bejegyzéseket, látszólag semmi nem történik:

                    Code:
                    for file in `find . -iname „*.html”`
                    do
                    mv „$file” _”$file”
                    cat _”$file”|sed -e ‘s/styles.css/styles2.css/g’ > „$file”
                    rm _”$file”
                    done

                    Ez is ugyanaz mint az elõzõ kód, nem módosít semmit:

                    Code:
                    #!/bin/sh

                    # kigyujtes htmlista fajlba

                    find . -type f -name ‘*.html’ > htmlista

                    # atnezzuk az osszes fajlt
                    for i in `cat htmlista`; do

                    # lecsereljuk a regi cimet ujra es atmeneti allomanyba irjuk
                    cat „$i” | sed s/a_cserélendõ_szöveg/az_új_szöveg/g > atmeneti

                    # atnevezzuk az atmeneti fajlt az eredetire
                    mv atmeneti „$i”
                    done

                    # toroljuk a segedallomanyokat
                    rm htmlista

                    Csak ötlet: Az nem lehet probléma, hogy a lecserélendõ szövegekben szerepel egy pont? (styles.css) Gondolom a pont speckós karakter a programozásban.

                    #2050102
                    Baki
                    Felhasználó
                      ds wrote:
                      AMD486 wrote:
                      A szüneteket pedig elõbb szedd le MINDEN fájlnévbõl, mert fölöslegesen dagasztja a scriptet a szünetes fájlnevek feldolgozása. (különben nem nagy cucc a dolog)
                      hááát
                      ls
                      betuk_brailleszamaik  braille  he l o  kezikonyv  menurendszer  menu_szavak
                      for i in *;do echo „$i”;done
                      „betuk_brailleszamaik”
                      „braille”
                      „he l o”
                      „kezikonyv”
                      „menurendszer”
                      „menu_szavak”

                      tehát a for jó, csak az echo nem
                      a sed kimenetének átirányítása ugyanarra a fájlra szintén nem jó ötlet

                      ds!
                      Fogalmam nincs mit akartál írni ezzel. 😀

                      #2050103
                      ds
                      Felhasználó

                        nembaj 🙂

                      10 bejegyzés megtekintése - 1-10 / 19
                      • Be kell jelentkezni a hozzászóláshoz.