Bash script feladat? (Bővebben lent)
Adott egy adat.dat fájl, amiben lakásokról tárolunk különböző infókat. Ezek az infók ;-vel elválasztva vannak eltárolva ilyen sorrendben: melyik kerületben van, területe, ára, jellemzői.
16;135;69;hangszigetelő falak, erkély, garázs
13;78;44;tégla, garázs, erkély, emeletes
12;780;1280;panorámás kilátás, garázs, emeletes
23;100;25;kert, bútorozatlan, riasztórendszer
3;123;99;4 szoba, emeletes, garázs, bútorozott
16;97;60;erkély, riasztórendszer, bútorozott
Itt most a 4. mezővel kell foglalkozni. Azt kéne megcsinálnom, hogy a programot a -k kapcsolóval indítva, és utána egymás után beírva a tetszőleges számú keresett jellemzőket kiszűrje az adott jellemzőkkel rendelkező lakásokat az adat.dat fájlból. Tehát ha pl. úgy futtattom a programot, hogy bash lakas.sh -k garázs emeletes, akkor a következő eredményt adja vissza:
13;78;44;tégla, garázs, erkély, emeletes
12;780;1280;panorámás kilátás, garázs, emeletes
3;123;99;4 szoba, emeletes, garázs, bútorozott
Awk-kal próbálom megcsinálni, odáig el is jutottam, hogy a -k kapcsoló utáni első szóra helyesen működik a program, de nem tudom, hogy hogy lehetne tetszőleges számú keresőszóra megcsinálni. Eddig így néz ki a kód:
if test "$1" = "-k"
then awk -v szo="$2" 'BEGIN{FS=";"} {if ($4 ~ szo) {print $0}}' adat.dat;
exit 1;
fi
Próbáltam a "$2" regex-t helyettesíteni a "${@:2}"-vel, de sajnos ez nem vált be. Valaki esetleg segítene nekem a megoldásban? Nagyon megköszönném.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Megcsináltam közben. Ha valaki esetleg hasonlóval küzd, bemásolom a megoldásomat:
if test "$1" = "-k"
then awk -v szo="${*:2}" 'BEGIN{FS=";"} {n=split(szo,ks," ")} {for(i=1;i<=n;i++) if($4!~ks[i]) next}1' adat.dat;
exit 1;
fi
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!