AWK BASH-- CSV fájlok összevasalása

AWK BASH-- CSV fájlok összevasalása
2010-05-28T16:18:34+02:00
2010-05-31T11:04:36+02:00
2022-11-17T22:41:53+01:00
Kormen
Sziasztok!

Van egy problémám, melyhez ha lehet AWK-t kellene használni, esetleg bash script nyelvet.

Van két file, CSV. első fileban áruadatok vannak, igy néz ki:

cikkszam;cikknev;nettoar;szabadkeszlet;kepek;leiras;gyarto;kategoria;garancia;
04585;ARCTIC COOLING Arctic C1 Hálózati USB-s töltő (1 port);1690;81;;;ARCTIC;196;Nem garanciális;

a második file az a kategóriák érthető megnevezését tartalmazza:

kategoria;megnevezes
20;FOKONYV;
92;3G adapter;
93;Access point;
94;Akkumulátor;
95;Alaplap;
96;Analóg fényképezőgép;
97;Autó hi-fi;

a feladat hogy az első fileban a kategóriaszámot kicseréljem a kategória megnevezésbe, és ez egy új fileban le legyen tárolva.

Olvasgattam sokat, de nem tiszta az ügy. valahogy soha nem azt csinálta amit kellett.

Ha kérhetem okkulás végett ha valaki tudja a megoldást ne féljen részletesen megmagyarázni melyik karakter mit jelent, mert meg akarom tanulni, ugyanis lesz még ezzel feladat utána.

Köszönöm!
Mutasd a teljes hozzászólást!

  • Ha kérhetem okkulás végett ha valaki tudja a megoldást ne féljen részletesen megmagyarázni melyik karakter mit jelent, mert meg akarom tanulni, ugyanis lesz még ezzel feladat utána.


    Nekem ugy tunik, hogy te itt kesz megoldast szeretnel. Ha igy van, akkor a modi at is helyezi a topicot az Allas/munka rovatba, es megkerunk, hogy ird le, hogy mennyit szandekszol fizetni erte!

    Ha magad akarod megoldani, mutasd az eddigi kodot, ird le, hogy mi nem megy, hol akadtal el, es segitunk!
    Mutasd a teljes hozzászólást!
  • na lorand mar megint beszol
    Mutasd a teljes hozzászólást!
  • Mi a problema?
    Mutasd a teljes hozzászólást!
  • Szerintem valamilyen programozási nyelven kellene, például PHP-ben: először betöltöd a szótárfájlt egy asszociatív tömbbe, után soronként olvasod/szétszeded/javítod/összerakod/kiírod a másikat.
    Mutasd a teljes hozzászólást!
  • Hát ugye gondoltam ez egy segélyező oldal, nem óhajtottam a hülyeségeimmel fogyasztani a helyet, mivel egyelőre uccse müxik, de ha gondoljátok... Mellesleg épp tanulom a nyelvet, delphiben, c-ben javaban, és abakuszon megoldom. AWK-BASH még nem megy. Amit eddig elértem (a semmi):

    #!/bin/bash set -x celdir="/tmp/csere" nap=`date +%d` file1=$celdir/arlista.csv file2=$celdir/kategoria.csv #ez kiszedi a bemenetként átadott kategóriaszámhoz tartozó kategórianevet. getstat(){ src=$2 kat=`awk 'BEGIN {FS=";"}; /'"$src"'/ { print $2 }' $1` echo $kat } #bashból is hívható legyen... declare -fx getstat if [ ! -d $celdir 2> /dev/null ]; then mkdir $celdir fi cd $celdir #Ez csak kikeresi az első filebol a másidikban levő dolgokat nemjó #awk -F, 'FNR==NR{f1[$1];next}$2 in f1' OFS=, "'"$file1"'" "'"$file2"'" #Ennek müködnie kellene awk 'FNR==NR{a[$8]=$2;next} $8 in a{print a[$8] $2}' "$file2" "$file1"

    Ezt az utolsó sort barkácsolom. Sajnos nem azt csinálja amit elvileg kellene. Nem találja meg. Elvileg az a tömbben a $8 mezőt a file2 $2 mezőjével helyettesíti. majd kiírja a $8-at ami ugye helyettesítve van. De nem vagyok biztos, és erteni sem tökéletesen értem. De mindenféle fórumokból ez tünik használhatónak (csak a részletekbe hogy mit miért csinál, nem nagyon mennek bele)

    az első file: (részlet)

    04585;ARCTIC COOLING Arctic C1 Hálózati USB-s töltő (1 port);1690;81;;;ARCTIC;[b]196[/b];Nem garanciális; 04586;ARCTIC COOLING Arctic C2 Hálózati USB-s töltő (4 port);2100;72;;;ARCTIC;[b]196[/b];Nem garanciális; 04582;ARCTIC COOLING Arctic Power Akku AA (4db);1200;21;;;ARCTIC;[b]196[/b];Nem garanciális;

    a második file (részlet):

    194;Szerver HDD; 195;Digitális képkeret; [b]196;Akkumlátor és Elem;[/b] 197;Patron, toner; 198;Szkenner;

    kimeneti file:

    04585;ARCTIC COOLING Arctic C1 Hálózati USB-s töltő (1 port);1690;81;;;ARCTIC;[b]Akkumlátor és Elem[/b];Nem garanciális; 04586;ARCTIC COOLING Arctic C2 Hálózati USB-s töltő (4 port);2100;72;;;ARCTIC;[b]Akkumlátor és Elem[/b];Nem garanciális; 04582;ARCTIC COOLING Arctic Power Akku AA (4db);1200;21;;;ARCTIC;[b]Akkumlátor és Elem[/b];Nem garanciális;



    Ps: A "valamilyen nyelven kéne" dolog, több nyelven megírom (írtam) gond nélkül, de most az AWK-Bash párost tanulnám.

    Kormen
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd