home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 August - Disc 2 / chip_20018102_hu.iso / cd_keres / chip_keres.sh < prev    next >
Linux/UNIX/POSIX Shell Script  |  2001-02-04  |  9KB  |  220 lines

  1. #!/bin/sh
  2. #
  3. # Ez a script GNU/GPL licensz√, mindenki hasznßlja egΘszsΘggel.
  4. # A script esetleges hibßs m√k÷dΘse ßltal okozott hibßkΘrt felel⌡ssΘget
  5. # nem vßllalok. Mindenki _csak_ sajßt felel⌡ssΘgΘre hasznßlhatja.
  6. # A script korßntsem t÷kΘletes, ha valamilyen javφtand≤ hibßt,
  7. # vagy hißnyossßgot talßlsz benne, kΘrlek Θrtesφts a szimszon@freemail.hu cφmen.
  8. # A script els⌡ paramΘterekΘnt a Chip Magazin azon katalogusßt kell megadni
  9. # amely egy sima sz÷vegfile, nincs t÷m÷rφtve, Θs a mez⌡elvßlaszt≤ karakterek
  10. # > (cs⌡r÷k). Illetve a scriptet ßtφrva, a DEFFILE vßltoz≤ban megadhat≤ a file
  11. # helye.
  12. # v.0.6 - 2001.01.04.
  13. # KΘszφtette: Gyuris Szabolcs J.
  14. #
  15. PID=$$
  16. TMP1="/tmp/chip.$PID.tmp1"                # Az els⌡ ideiglenes ßllomßny amit lΘtrehoz
  17. TMP2="/tmp/chip.$PID.tmp2"                # A mßsodik
  18. DEFFILE="/cdrom/cd_keres/chipcds4.txt" # A file alapΘrtelmezett helye
  19. HELPFILE="chip_help.txt"                 # A programhoz val≤ segitsΘget ny·jt≤ sz÷vegfile
  20. FILE=$1                                  # Az els⌡ paramΘter ßtadßsa
  21. MENU=0
  22. KERES=""                                 # Keres⌡kifejezΘs
  23. NEM=""                                   # ╔s amit nem keres
  24. CAPS="KI"                                # figyelje-e a nagy/kisbet√ket
  25. HIBA=0                                   # cancel = 1
  26. FMENT=""                                 # a talßlatok mentΘsΘhez a file neve
  27. CHECK="1 2 3"                            # oszlopokban valo kereses
  28. RENDEZ="Rendezetlen"             # RendezΘs tφpusa
  29. RENDEZ_TMP="File_neve < off File_leφrßsa < off CD_szßma < off Rendezetlen < on"
  30.                      # RendezΘsi lista
  31. BACKTITLE="Chip Magazin CD tartalomjegyzΘk b÷ngΘsz⌡ v.0.6 | adatbßzis: "
  32.                      # Program fejlΘc
  33. # Windows sz√r⌡
  34. # \232 - ▄
  35. # \032 - passz
  36. # \217 - ┴
  37. # \226 - √
  38. # \227 - ┌
  39. # \234 - ·
  40. # \204 - passz
  41. #tr '\232' '▄' \| tr '\032' ' ' \| tr '\217' '┴' \| tr '\226' '√' \| tr '\227' '┌' \| tr '\234' '·' \| tr '\204' '?'
  42.  
  43.  
  44. if [ $FILE = "--help" ] 2> /dev/null; then
  45.   echo "Keres⌡program a Chip Szßmφt≤gΘpmagazin CD mellΘklet katal≤gusßt"
  46.   echo "tartalmaz≤ adatbßzishoz, verzi≤: 0.6"
  47.   echo "Az adatbßzisnak sz÷veges ßllomßnynak kell lennie, amiben a kⁿl÷nb÷z⌡"   
  48.   echo "oszlopokat \">\" (cs⌡r÷k) vßlasztjßk el egymßst≤l. Valamint az ßllomßny"
  49.   echo "ne legyen t÷m÷rφtve. Ilyen pΘldßul a \"chipcds4.txt\" ßllomßny"         
  50.   echo "Hasznßlata:"
  51.   echo " "
  52.   echo "chip_keres.sh [ut/adatbßzis_neve | --help]"
  53.   echo " "
  54.   echo "Abban az esetben, ha nem adunk meg adatbßzisnevet, akkor az alapΘrtel-"
  55.   echo "mezett \"$DEFFILE\"-t pr≤bßlja hasznßlni." 
  56.   echo "Ha φgysem talßlta meg, akkor a program rß fog kΘrdezni indφtßskor."
  57.   echo "Az alapΘrtelmezett helyet egyszer√en meg lehet vßltoztatni egy "
  58.   echo "sz÷vegszerkeszt⌡vel, csak meg kell nyitni a chip_keres.sh-t vele, Θs ßtφrni"
  59.   echo "a DEFFILE nev√ vßltoz≤ ΘrtΘkΘt a megfelel⌡re."
  60.   echo "A programot mindenki csak sajßt felel⌡ssΘgΘre hasznßlja!"
  61.   exit 0
  62. fi
  63.  
  64. if ! [ -e $HELPFILE ]; then
  65.   echo "Nem talßlom a $HELPFILE-t :("
  66.   echo "ENTER a tovßbblΘpΘshez, CTRL+C a megszakφtßshoz"
  67.   read
  68. fi # ! [ -e $HELPFILE ]
  69. if [ -z $FILE ] || ! [ -e $FILE ]; then
  70.     if [ -e $DEFFILE ]; then
  71.       FILE=$DEFFILE
  72.     else
  73.       FILE=$DEFFILE
  74.       until [ -e $FILE ] || ! [ $HIBA = 0 ]
  75.       do
  76.         dialog --inputbox "Hol talßlhat≤ az adatbßzis?" 8 70 "$FILE" 2> $TMP1
  77.         HIBA=$?
  78.         FILE=$(cat $TMP1)
  79.       done # [ -e $FILE ] || ! [ $HIBA = 0 ]
  80.       if ! [ $HIBA = 0 ]; then 
  81.         echo "Nincs feldolgozand≤ file... :("
  82.         exit 1
  83.       fi # [ $HIBA ]
  84.     fi #[ -e $DEFFILE ]
  85. fi # [ -z $FILE ]
  86. EV=`find $FILE -printf '%TY'`               # Hanyadik Θv
  87. HONAP=`find $FILE -printf '%Tm'`            # Honap
  88. NAP=`find $FILE -printf '%Td'`              # Nap
  89. ORA=`find $FILE -printf '%Tk'`              # Ora
  90. PERC=`find $FILE -printf '%TM'`             # Perc
  91. BACKTITLE="$BACKTITLE$EV.$HONAP.$NAP. $ORA:$PERC"
  92.  
  93. if file $FILE | grep "gzip compressed" >/dev/null; then
  94.   CAT="zcat"
  95. else
  96.     CAT="cat"
  97. fi
  98.     
  99.  
  100. until [ $MENU = 4 ];
  101. do
  102.   dialog --backtitle "$BACKTITLE"\
  103.   --menu KeresΘs 17 60 9\
  104.   1 "Amit keres -> $(echo "$KERES" | head -c 30 )"\
  105.   2 "Amit nem keres -> $(echo "$NEM" | head -c 30 )"\
  106.   3 "KeresΘs ->"\
  107.   4 "KilΘpΘs"\
  108.   5 "Kis/nagybet√k -> $CAPS"\
  109.   6 "KeresΘsek a(z) $CHECK oszlopokban"\
  110.   7 "RendezΘs -> $RENDEZ"\
  111.   8 "Fileba mentΘs -> $(echo "$FMENT" | head -c 30 )"\
  112.   9 "SegφtsΘg" 2> $TMP1
  113.   MENU=$(cat $TMP1)
  114.   if [ -z $MENU ]; then
  115.     MENU=4
  116.   fi # [ -z $MENU ]
  117.   clear
  118.   case $MENU in
  119.     1) dialog --backtitle "$BACKTITLE"\
  120.        --inputbox "Mit keressen?" 8 70 "$KERES" 2> $TMP1
  121.        if ! [ $? -eq 1 ]; then 
  122.          KERES=$(cat $TMP1)
  123.        fi;;
  124.     2) dialog --backtitle "$BACKTITLE"\
  125.        --inputbox "Mit ne keressen?" 8 70 "$NEM" 2> $TMP1
  126.        if ! [ $? -eq 1 ]; then
  127.          NEM=$(cat $TMP1)
  128.        fi;; # ! [ $? -eq 1 ]
  129.     3) echo -en "A keresΘs folyamatban van [. ]\r"
  130.        if [ $CAPS = "BE" ]; then
  131.          $CAT $FILE | tr '\232' '▄' | tr '\032' ' ' | tr '\217' '┴' | tr '\226' '√' |\
  132.                tr '\227' '┌' | tr '\234' '·' | tr '\204' '?' |\
  133.       awk -F ">" -v k="$CHECK" -v mit="$KERES" -v nem="$NEM"\
  134.         '{ gsub(/\r/,"") }
  135.         { if (( k ~ "1" && $1 ~ mit )\
  136.         || ( k ~ "2" && $2 ~ mit )\
  137.         || ( k ~ "3" && $3 ~ mit )\
  138.         || ( k ~ "1 2 3" && $0 ~ mit )) {
  139.         if ( nem == "" || $0 !~ nem ) \
  140.         { print  $1">"$2">"$3 } } }' > $TMP2
  141.        else
  142.           $CAT $FILE | tr '\232' '▄' | tr '\032' ' ' | tr '\217' '┴' | tr '\226' '√' |\
  143.                tr '\227' '┌' | tr '\234' '·' | tr '\204' '?' |\
  144.         awk -F \> -v k="$CHECK" -v mit="$KERES" -v nem="$NEM"\
  145.         'BEGIN { 
  146.         mit = tolower(mit)
  147.         nem = tolower(nem)
  148.     }
  149.         { gsub(/\r/,"") }
  150.         { if (( k ~ "1" && tolower($1) ~ mit )\
  151.         || ( k ~ "2" && tolower($2) ~ mit )\
  152.         || ( k ~ "3" && tolower($3) ~ mit )\
  153.         || ( k ~ "1 2 3" && tolower($0) ~ mit )) {
  154.         if ( nem == "" || tolower($0) !~ nem )\
  155.         { print  $1">"$2">"$3 } } }' > $TMP2
  156.        fi # [ $CAPS = "BE" ]
  157.        echo -en "RendezΘs folyamatban van  [..]\r"
  158.        case $RENDEZ in
  159.      "File_neve") cat $TMP2 | sort -t\> +0 > $TMP1;;
  160.      "File_leφrßsa") cat $TMP2 | sort -t\> +1 > $TMP1;;
  161.      "CD_szßma") cat $TMP2 | sort -t\> +2 > $TMP1;;
  162.      "Rendezetlen") cp $TMP2 $TMP1;;
  163.        esac
  164.        cat "$TMP1" | awk '{gsub(/\|/,"\t"); print $0}' > $TMP2       
  165.        if ! [ -z "$FMENT" ]; then
  166.          cp $TMP2 $FMENT
  167.        fi # ! [ -z "$FMENT" ];
  168.        X=500
  169.        Y=500
  170.        echo "RendezΘs folyamatban van  [OK]"
  171.        dialog --textbox $TMP2 $Y $X 2> $TMP1
  172.        Y_M=$(cat $TMP1 | awk '{gsub(/C.+\(\-/,""); gsub(/,.+/,""); print $0 }') #'
  173.        X_M=$(cat $TMP1 | awk '{gsub(/.+\(\-[0-9]+,\-/,""); gsub(/\).+/,""); print $0 }') #'
  174.        let "X=$X-($X_M*2)"
  175.        let "Y=$Y-($Y_M*2)-3"       
  176.        dialog --clear --backtitle "File nΘv | Meghatßrozßs | Chip CD szßma Θs k÷nyvtßr"\
  177.        --textbox "$TMP2" $Y $X
  178.        dialog --clear;;
  179.     5) if [ $CAPS = "KI" ]; then
  180.          CAPS="BE"
  181.        else
  182.          CAPS="KI"
  183.        fi;; # [ $CAPS = "KI"]
  184.     6) dialog --backtitle "Chip Magazin CD tartalomjegyzΘk b÷ngΘsz⌡ v.0.5 | adatbßzis: $EV.$HONAP.$NAP. $ORA:$PERC"\
  185.         --checklist "Milyen oszlopokban keressen?" 10 70 3 \
  186.        1 "File neve" on 2 "MegjegyzΘs" on 3 "CD sorszßm" on 2> $TMP1
  187.        if ! [ $? -eq 1 ]; then
  188.          CHECK=$(cat $TMP1 | tr -d \")
  189.        fi;; # ! [ $? -eq 1 ];
  190.     7) dialog --backtitle "$BACKTITLE"\
  191.        --radiolist "Milyen oszlopra rendezzen?" 12 70 4 $RENDEZ_TMP 2> $TMP1
  192.        if ! [ $? -eq 1 ]; then                                                  
  193.          RENDEZ=$(cat $TMP1 | tr -d \")                                       
  194.          RENDEZ_TMP=$(echo "$RENDEZ_TMP" | awk '{ gsub(/on|off/,"\n"); print $0 }' |\
  195.                       awk -v x="$RENDEZ" '{gsub(/[ ]/,"_",x)}\
  196.                       {if ( $0 ~ x && length($0) != 0 ) { print $0"on"}\
  197.                        if ( $0 !~ x && length($0) != 0 ) { print $0"off"}}') #'
  198.        fi;; # ! [ $? -eq 1 ];
  199.     8) dialog --backtitle "$BACKTITLE"\
  200.        --inputbox "                     Mi legyen a file neve?\n\
  201.         Ha ⁿres stringet adsz meg, akkor nem lesz mentΘs." 10 70 "$NEM" 2> $TMP1
  202.        if ! [ $? -eq 1 ]; then
  203.          FMENT=$(cat $TMP1)
  204.        fi;; # ! [ $? -eq 1 ] 
  205.     9) X=500
  206.        Y=500
  207.        dialog --textbox $HELPFILE $Y $X 2> $TMP1
  208.        Y_M=$(cat $TMP1 | awk '{gsub(/C.+\(\-/,""); gsub(/,.+/,""); print $0 }') #'
  209.        X_M=$(cat $TMP1 | awk '{gsub(/.+\(\-[0-9]+,\-/,""); gsub(/\).+/,""); print $0 }') #'
  210.        let "X=$X-($X_M*2)"
  211.        let "Y=$Y-($Y_M*2)-3"       
  212.        dialog --clear --backtitle "$BACKTITLE"\
  213.        --textbox $HELPFILE $Y $X;;   
  214.   esac # $MENU in
  215. done # [ $MENU = 4 ];
  216. rm $TMP1 2> /dev/null
  217. rm $TMP2 2> /dev/null
  218.