„Csak guruknak” – konyhanyelven…

Kezdőlap Fórumok Programozás „Csak guruknak” – konyhanyelven…

10 bejegyzés megtekintése - 61-70 / 151
  • Szerző
    Bejegyzés
  • #2081728
    uzsolt
    Felhasználó

      Szerintem elsősorban nem kayapo-t illeti, hanem a (sajnos) megboldogult Linuxvilágot. Egyébként most szintén megy, nem tudom, mi lehetett nálad vagy náluk.

      #2081729
      kayapo
      Felhasználó
        uzsolt wrote:
        Szerintem elsősorban nem kayapo-t illeti, hanem a (sajnos) megboldogult Linuxvilágot. Egyébként most szintén megy, nem tudom, mi lehetett nálad vagy náluk.

        Ez így igaz, ezen felül uzsolt tett még valami fontosat, a scriptet lefuttatni nulla fáradság volt, megírni annál több.

        #2081730
        uzsolt
        Felhasználó

          Na, megint alkottam egyet. Nem tudom, fogja-e valaki használni, de azért idevágok nektek egy kódot. Egy egyszerű dolgot csinál: a második paramétertől leledző fájlokban megnézi, hogy melyek azok a sorok, amelyek egy adott számnál kevesebbszer (vagy pont ugyanannyiszor) fordul elő, és azokat kiírja, ill. mellé azt, hogy mennyi is az az annyi.
          Szóval a kód:

          #!/bin/bash
          # Egy kis útmutató
          function Help () {
                  echo Használat: $(basename $0) n files
                  echo n : legfeljebb hányszori elõfordulásnál írjuk ki
                  echo files : melyik fájlokból
          }

          # Paraméterek számának tesztelése
          if [ $# -lt 2 ]; then
                  Help
                  exit 1
          fi

          # Kér-e a delikvens help-et
          if (echo $* | grep — „–help” &>/dev/null); then
                  Help ; exit 0
          fi

          # Maga az érdemi munka
          TEMPFILE=$(mktemp)
          NEVEK=$(mktemp)
          # Eltároljuk a minimális számot, hogy lehessen shift-elni
          MIN=$1

          # Eltűnik az első paraméter, így csak a fájlnevek maradnak
          shift
          # A fájlokat kilistázzuk és rendezve egy ideiglenes fájlba nyomjuk
          cat $* | sort > $TEMPFILE
          # Minden sorból csak egyet kérünk
          cat $TEMPFILE | uniq > $NEVEK

          # Honnan kell olvasni
          exec 9>&0 < $NEVEK
          # Amíg van sor, addig a NEV változóba olvasunk…
          while read NEV ; do
                  # Megszámoljuk, hányszor van a TEMPFILE-ban
                  HANYSZOR=$(grep -c „$NEV” $TEMPFILE)
                  # Ha kisebb vagy egyenlő, akkor…
                  if [ $HANYSZOR -le $MIN ]; then
                          echo $NEV $HANYSZOR
                  fi
          done

          # Drága a tárhely, ezért törlünk…
          rm $TEMPFILE $NEVEK

          Egészségetekre!

          #2081731
          kisbetu
          Felhasználó

            nemláccanak a komentek

            #2081732
            uzsolt
            Felhasználó

              Remélem, most már jobb 😉

              (Themis téma alatt a quote mezője sötétebb, és ott jól látszódott a bézs is)

              #2081733
              xcut
              Felhasználó

                Bocs, hogy ide írok, de akadt egy kis problémám, és nem nagyon van ötletem, hogy SQL-lel hogyan oldjam meg (postgres a platform).
                A helyzet a következő: van egy hierarchikus rendszer, N szinttel (a szintek száma ismeretlen). Ha valaki beküld egy adatot, akkor van lehetősége arra, hogy csak az ő rendszerében jelenjen meg, vagy az alatta lévő, és hozzá tartozó szintek rendszereiben is. A probléma a következő: mondjuk a legalsó szintről milyen query-vel kapom meg a fölötte álló szintek id-jeit? A tábla leegyszerűsítve:
                id – int, sequence-szel növelve
                title – text, a szint neve
                parent – a szülő id-je, legfelső esetén NULL

                #2081734
                uzsolt
                Felhasználó

                  Szerintem mindenki ismeri az olyan jellegű példákat, miszerint ha leírjuk egytől 2007-ig az összes egész számot, akkor az egyes számjegyet hányszor írtuk le. Mivel a unix/linux alapparancsok jó matekosok, ezért rá lehet őket bírni a feladat (brute-force) megoldására:

                  Code:
                  $ seq 1 2007 | grep -o 1 | wc -l
                  1601
                  #2081735
                  Névtelen
                    uzsolt wrote:
                    Szerintem mindenki ismeri az olyan jellegű példákat, miszerint ha leírjuk egytől 2007-ig az összes egész számot, akkor az egyes számjegyet hányszor írtuk le. Mivel a unix/linux alapparancsok jó matekosok, ezért rá lehet őket bírni a feladat (brute-force) megoldására:

                    Code:
                    $ seq 1 2007 | grep -o 1 | wc -l
                    1601

                    Reméljük matekversenyen semmilyen kiscsákó nem fogja ezt beadni megoldásnak. Bár mondjuk aki érti biztos dob egy hátast 🙂

                    #2081736
                    pointux
                    Felhasználó

                      Gondoltam, szórakozom egy kicsit a less-szel.:)
                      Írtam egy scriptet, mely különböző színeket ad a man oldalaknak és kiírja a parancsot is. Így, ha valakinek megtetszenek az aktuális színek, az el tudja legközelebb is érni ezt a csodát. 🙂

                      Íme a script:

                      Code:
                      #!/bin/bash

                      ESC=$’x1b’
                      TERMINFO_DIR=”/usr/share/terminfo/x”

                      get_key () {
                          read -n1 KEY

                          if [ „${KEY}” == „${ESC}” ]
                          then
                      exit 0
                          fi
                      }

                      for FILE in `find ${TERMINFO_DIR}`
                      do
                          TERM=”${FILE##*/}” man mencoder
                         
                          clear
                         
                          echo „”
                          echo „Command: TERM=””${FILE##*/}”” man mencoder”
                          echo „”
                          echo „Press any key to continue or ESC to quit.”
                          echo „”
                          echo „”

                          get_key
                      done

                      És néhány screenshot:

                      #2081737
                      uzsolt
                      Felhasználó

                        Egy újabb tv-műsor:

                        Code:
                        !/bin/bash

                        CONFIG_FILE=~/.config/tvmusor.cfg

                        function PrintChanell () {
                                FILE=$1
                                TMP_FILE=$(mktemp)
                                w3m -dump http://tvmusor.aweben.hu/$FILE > $TMP_FILE
                                MAX_SOR=$(grep -n tvmusor $TMP_FILE | sed -n „2p” | awk -F „:” {‘print $1’})
                                sed -n „5,$((MAX_SOR-1)) p” $TMP_FILE | grep -v „^$” | sed „3,$ s@^@  @g”
                                rm $TMP_FILE
                        }

                        exec 9>&0 < $CONFIG_FILE
                                while read egysor; do
                                        PrintChanell $egysor
                                        echo
                                done

                        A tvmusor.cfg fájl tartalma szimplán a csatorna neve, html nélkül (a szkriptben szereplő honlap linkjei alapján tudhatod meg).

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