sed segítség

Kezdőlap Fórumok Programozás sed segítség

10 bejegyzés megtekintése - 11-20 / 23
  • Szerző
    Bejegyzés
  • #2175126
    csablak
    Felhasználó

      Sajna gőzöm nincs a sedhez egyelőre, s a megadott oldal is angolul van és nincs benne példa!
      Csak minták vannak meg magyarázatok.

      De íme egy példa amire gondolok:

      $ sensors | grep CPU
      CPU Temp:    +37°C  (low  =    -1°C, high =  +127°C)  sensor = thermistor

      Nos amire szükségem van az csak a +37°C megjelenítése.

      Én eddig jutotttam.
      sensors | grep CPU | sed ‘s/ (.* //’

      Aztán hogy hogyan azt ne kérdezzétek, de ahogyan én értelmezem az valahogy így néz ki:
      A ‘s/ jelenti a törlést
      A ( jelenti hogy a ( is már törlésre kerül. Bár ez sem egyértelmű, mivel…(lejjebb majd írom.)

      A . pont hogy a szóközöket is (?) a ( után
      A * hogy minden egyéb karaktert is.
      A // végén mindig ez van. (?)
      Ha a zárójelet bezárom…
      $ sensors | grep CPU | sed ‘s/ (.*) //’
      CPU Temp:    +37°C  sensor = thermistor
      Akkor csak a zárójelek közti dolgok tűnnek el a zárójellel együtt.

      De az is lehet hogy zöldségeket beszélek. Sőt.

      Nos. valami ilyesmi magyarázattal megtűzdelt sed parancsot tudna-e nekem kreálni erre a +37 fokra?

      Itt írom ahogy fentebb említettem:
      $ sensors | grep CPU | sed ‘s/ +.* //’ ekkor az eredmény:
      CPU Temp:

      De viszont ha a + helyett :-ot írok hogy letöröljem a CPU Temp:-ját, akkor meg mintha nem csinálna semmit.
      $ sensors | grep CPU | sed ‘s/ :.* //’
      CPU Temp:    +37°C  (low  =    -1°C, high =  +127°C)  sensor = thermistor
      De az sem vezetett eredményre hogy a törlést szabályozzam.
      $ sensors | grep CPU | sed ‘s/ (.*) //’
      Itt ugye a ) végéig töröl a zárójellel együtt.
      Töröljön csak a h karakterig, mely ugye benne van a high szóban amely szó a ()-en belül van.
      $ sensors | grep CPU | sed ‘s/ (.*h //’
      Persze meg  ahogy én azt elképzelem, de hiába tettem a h karaktert idézőjelek közé, meg / jelek közé, semmi hatása nem volt.

      Egy szó mint száz nem értem, és ha valaki nem lesz olyan kedves hogy elmagyarázza, akkor nem is fogom.
      Csak azt nem mondjátok hogy egyéni szoc. probléma.
      Azt nem mondhatjátok hogy nem próbálkoztam. A man shell nekem sajnos nem sok mindent mond.

      #2175127
      csablak
      Felhasználó

        Sajna gőzöm nincs a sedhez egyelőre, s a megadott oldal is angolul van és nincs benne példa!
        Csak minták vannak meg magyarázatok.

        De íme egy példa amire gondolok:

        $ sensors | grep CPU
        CPU Temp:    +37°C  (low  =    -1°C, high =  +127°C)  sensor = thermistor

        Nos amire szükségem van az csak a +37°C megjelenítése.

        Én eddig jutotttam.
        sensors | grep CPU | sed ‘s/ (.* //’

        Aztán hogy hogyan azt ne kérdezzétek, de ahogyan én értelmezem az valahogy így néz ki:
        A ‘s/ jelenti a törlést
        A ( jelenti hogy a ( is már törlésre kerül. Bár ez sem egyértelmű, mivel…(lejjebb majd írom.)

        A . pont hogy a szóközöket is (?) a ( után
        A * hogy minden egyéb karaktert is.
        A // végén mindig ez van. (?)
        Ha a zárójelet bezárom…
        $ sensors | grep CPU | sed ‘s/ (.*) //’
        CPU Temp:    +37°C  sensor = thermistor
        Akkor csak a zárójelek közti dolgok tűnnek el a zárójellel együtt.

        De az is lehet hogy zöldségeket beszélek. Sőt.

        Nos. valami ilyesmi magyarázattal megtűzdelt sed parancsot tudna-e nekem kreálni erre a +37 fokra?

        Itt írom ahogy fentebb említettem:
        $ sensors | grep CPU | sed ‘s/ +.* //’ ekkor az eredmény:
        CPU Temp:

        De viszont ha a + helyett :-ot írok hogy letöröljem a CPU Temp:-ját, akkor meg mintha nem csinálna semmit.
        $ sensors | grep CPU | sed ‘s/ :.* //’
        CPU Temp:    +37°C  (low  =    -1°C, high =  +127°C)  sensor = thermistor
        De az sem vezetett eredményre hogy a törlést szabályozzam.
        $ sensors | grep CPU | sed ‘s/ (.*) //’
        Itt ugye a ) végéig töröl a zárójellel együtt.
        Töröljön csak a h karakterig, mely ugye benne van a high szóban amely szó a ()-en belül van.
        $ sensors | grep CPU | sed ‘s/ (.*h //’
        Persze meg  ahogy én azt elképzelem, de hiába tettem a h karaktert idézőjelek közé, meg / jelek közé, semmi hatása nem volt.

        Egy szó mint száz nem értem, és ha valaki nem lesz olyan kedves hogy elmagyarázza, akkor nem is fogom.
        Csak azt nem mondjátok hogy egyéni szoc. probléma.
        Azt nem mondhatjátok hogy nem próbálkoztam. A man shell nekem sajnos nem sok mindent mond.

        #2175128
        medveapu
        Felhasználó

          sensors | grep CPU | cut -c „14-19”
          (persze ez nem sed… abban majd uzsolt)

          #2175129
          medveapu
          Felhasználó

            sensors | grep CPU | cut -c „14-19”
            (persze ez nem sed… abban majd uzsolt)

            #2175130
            admin
            Adminisztrátor

              ha sed kell:
              sed -e ‘s|CPU Temp:||’ -e ‘s|(.*||’

              #2175131
              admin
              Adminisztrátor

                ha sed kell:
                sed -e ‘s|CPU Temp:||’ -e ‘s|(.*||’

                #2175132
                uzsolt
                Felhasználó

                  Én inkább awk-val esnék neki:

                  Code:
                  awk ‘{print $3}’

                  Sed:

                  Code:
                  sed „s@CPU Temp: *([^ ])*.*@1@”

                  Legalábbis első pillantásra.

                  #2175133
                  uzsolt
                  Felhasználó

                    Én inkább awk-val esnék neki:

                    Code:
                    awk ‘{print $3}’

                    Sed:

                    Code:
                    sed „s@CPU Temp: *([^ ])*.*@1@”

                    Legalábbis első pillantásra.

                    #2175134
                    csablak
                    Felhasználó

                      Köszi a kimerítő válaszokat. Így már rögtön tudom hogy mi miként működik, de az awk tényleg jóval barátságosabbanak tűnik.
                      S azt már talán értem is hogy miként adta ki az eredményt.
                      Ahogy értelmezem, az awk számára minden mezőkből áll. Az első mezőre a $1-gyel hivatkozik, ekkor ugye azt írja majd ki hogy CPU
                      A 2. mező a Temp:
                      A 3. lesz ami nekem kell. És így tovább.

                      #2175135
                      csablak
                      Felhasználó

                        Köszi a kimerítő válaszokat. Így már rögtön tudom hogy mi miként működik, de az awk tényleg jóval barátságosabbanak tűnik.
                        S azt már talán értem is hogy miként adta ki az eredményt.
                        Ahogy értelmezem, az awk számára minden mezőkből áll. Az első mezőre a $1-gyel hivatkozik, ekkor ugye azt írja majd ki hogy CPU
                        A 2. mező a Temp:
                        A 3. lesz ami nekem kell. És így tovább.

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