Bash script

Kezdőlap Fórumok Programozás Bash script

10 bejegyzés megtekintése - 361-370 / 438
  • Szerző
    Bejegyzés
  • #2053539
    birno
    Felhasználó

      Amennyi idő alatt ezt leírtad a backslash tengert is kibogoztad volna.  😀

      Akkor röviden.
      A spaceket cserélem ” „-re, a gond „[]” karakterek.
      A könyvtár neve: [2003] Sphynx
      Ha terminálból fut a script cseréli a „[” és „]” jelet „[” és „[” és műxik.
      Ha Thunarból használnám, akkor nem cseréli, de csak ezeket a jeleket, a spaceket és a „()” karakterek feldolgozza.

      Ahogy mégegyszer megnéztem, érdekes mód a „]” utáni spacehez sem rak backslash-t, de az összes többihez igen.
      Fura…

      Az idézőjeleket majd kipróbálom, terminálból megette, arra emlékszem, de scriptben nem próbáltam ha jól rémlik.

      #2053540
      gendelider
      Felhasználó

        A szögletes zárójelek nagyon aljasok a regexp-ben, (ugyebár „választható” szetet jelöl) ugyanis van olyan program, amelynek direktben kell megadni (pl a vi ex-e), ott a backslash szögletes jelöli a normál karaktert, és van olyan (ha jól rémlik, a perl ilyen) ahol a backslash szögletes a kitüntetett, és a backslash nélküli normál, tehát fordítva.

        Egyszer régen láttam egy táblázatot a regexp-röl, hogy hol mit jelentenek a különbözö dolgok (csillag, szögletes, egyszerü, kapcsos, pluszjel,…) hogyan kell sh-nak, bash-nak, perl-nek, awk-nak, sed-nek, ex-nek… és mindegyik kicsit legalább más volt.

        Kellemes tépödést, mert tudni kell, mi a „fogadó” regexpje…

        #2053541
        birno
        Felhasználó

          Gondolom nincs meg az a táblázat?  🙂

          A „fogadó” a „#/bin/sh”, majd a sed program.
          Lehet én nem értem a dolgot, de a példámban a „fogadó” mindig ugyanaz, az én hibám akkor jön elő, ha a „küldő” más.

          #2053542
          pointux
          Felhasználó

            A „[„-ekkel nem lehet gond mivel annak a unix karaktere is „[„, csak a se paramétereként (vagy mi) kell megadni „[„-ként, de az meg „statikus”, tehát nem egy pattern változó tartalmazza. Maga a szöveg, amit szűrni kell, az meg lényegtelen, mert a „[” mindig „[” marad. (Max. akkor kell cserélni, ha a feldolgozóban jelent valamit, mint pl. a „”. Szerintem a mocp – bár nem próbáltam – „[„-t ugyanúgy értelmezi. A space-eket viszont nem.)
            Egyébként meg hiába raksz be „”-t a „[” elé, mert a következő pipe-nál vissza fogja cserélni a „[-t” „[„-re mivel a „[” = „[” (kiv. ahol jelentése van, ahogy már említettem). Ha azt akarod, hogy megmaradjon, akkor „\[„-re kell cserélned, mert ez már nem „[” lesz, hanem egy „” + „[„. Nade, mivel ezt már nem fogja neked visszaalakítani automatikusan, ezért, ha ezt adod meg közvetlenül pl. útvonalban paraméterként, akkor hibás lesz az útvonal… természetesen, mert abban nincs „”… Ha pl. file-ba mented, akkor jó, mert akkor „[” beleírni, de, ha paraméterként (bináris stringként) kezeled, akkor neked kell gondoskodni a visszaalakításról
            Ezért mondtam, hogy hacsak a fogadó program nem ígényli a „[„-t, „[” helyett akkor nem szabad vele foglalkozni, mert csak bonyodalmat okoz.

            A terminal és script között van egy óriási különbség. A terminal nem alakítja át a unix jeleket. Tehát egy ” ” ” ” marad és azt kapja meg a program, majd ő alakítja ” „-szé… ezért működik helyesn.
            A file-ban a fordító át fogja alakítani a ” „-t ” „-szé, mivel ez unix és unix-ban a „”-nek jelentése van. Így a program nem ” „-t fog kapni hanem egy szimpla ” „-t és megvan a baj…

            #2053543
            birno
            Felhasználó

              Kiszedtem a „[]” jelek lecserélésére vonatkozó részt és működik. 🙂
              Köszi!

              #2053544
              elnoyle
              Felhasználó

                sziasztok

                lehet hogy elég hülye kérdés meg minden de nagyon szükségem lenne, egy olyan megoldásra, amivel egy fájl elejére tudok irni egy sort.
                ugye ha egy adott fájlba valamit bele akarok irni akkor:

                echo „valami” > x.txt

                ha  a végére akkor

                echo „valami” >> x.txt

                na de hogyan kell ha én a fájl elejére akarok irni?

                előre is köszi, elno

                #2053545
                pointux
                Felhasználó
                  Code:
                  echo -e „new line\n`cat file`” > file

                  info a benne szereplő parancsok magyarázatáról:

                  Code:
                  man echo cat
                  #2053546
                  elnoyle
                  Felhasználó

                    működik, köszönöm szépen.

                    üdv, elno

                    #2053547
                    uzsolt
                    Felhasználó

                      Esetleg egy kicsit „másabb” megoldás:

                      Code:
                      (echo Első sor ; cat fájl) > új_fájl

                      Persze akár awk-val is meg lehet csinálni 🙂

                      #2053548
                      Névtelen

                        …szükségem lenne, egy olyan megoldásra, amivel egy fájl elejére tudok irni egy sort.

                        Gedit-el is meg lehet oldani. 😛 🙂

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