• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Bash, wyciąganie komórek

Object Storage Arubacloud
0 głosów
386 wizyt
pytanie zadane 21 czerwca 2019 w Systemy operacyjne, programy przez assassin Gaduła (3,260 p.)
Zastanawiam się czy można w terminalu wyśietlić jedną konkretną komórkę?

 

Chciałbym, aby użytkownik podawał nazwy produktów, a skrypt sumował cenę.

W libreoffice mam bazę danych:

w jednej komórce NAZWA PRODUKTU      a w drugiej komórce CENA PRODUKTU

 

Jak to zrobić?

2 odpowiedzi

+1 głos
odpowiedź 21 czerwca 2019 przez RafalS VIP (122,820 p.)
wybrane 21 czerwca 2019 przez assassin
 
Najlepsza

Tak bym to widział w bashu:

sudo apt install -y python3.6 python3-pip && \
pip3 install --user openpyxl && \
python3.6 -c 'import openpyxl; wb = openpyxl.load_workbook("dupa.xlsx"); print(sum([b.value for a, b in zip(wb.active["A"], wb.active["B"]) if a.value.strip() == "filet z dorsza"]))'

 

komentarz 21 czerwca 2019 przez assassin Gaduła (3,260 p.)
Dosyć zabawne. Nawet się uśmiałęm.

Ale mam do zrobienia skrypt na zaliczenie w BASHU. Niestety.

Jesteś w stanie mi pomóc?
komentarz 21 czerwca 2019 przez RafalS VIP (122,820 p.)
Ale to jest w bashu napisane :D
komentarz 21 czerwca 2019 przez Benek Szeryf (91,010 p.)
Mnie to wygląda, jakbyś chciał gotowca. Pokaż, co udało Ci się napisać lub znaleźć w Internecie na ten temat.
komentarz 21 czerwca 2019 przez assassin Gaduła (3,260 p.)
mam coś takiego

 

echo "Podaj produkt"
read produkt

grep -i $produkt produkt.csv

i otrzymuję coś takiego:

klocki lego,150

ale nie wiem jak ogarnąć to sumowanie z tej drugiej komórki?

Czyli jak użytkownik wpisze klocki lego to, żeby do zmiennej dodać te 150.
1
komentarz 21 czerwca 2019 przez RafalS VIP (122,820 p.)
edycja 21 czerwca 2019 przez RafalS

Mogłeś powiedzieć, że masz plik .csv a nie:

W libreoffice mam bazę danych

...

W sumie podejście z grepem jest dosyć fajne. Wystarczy wykorzystać flage --only-matching (-o) i perlowy silnik regexowy:

echo "klocki lego,150" | grep -oiP "(?<=klocki lego,)\d+(\.)?\d?"

Do ogarnięcia troszkę trudniejszego regexa polecam regex101.com

komentarz 21 czerwca 2019 przez assassin Gaduła (3,260 p.)
Dobra. Powiem tak. Za niecałą godzinę muszę oddać ten skrypt, bo inaczej nie będzie zaliczenia. Help
komentarz 21 czerwca 2019 przez RafalS VIP (122,820 p.)
Własnie podałem Ci rozwiązanie na tacy. Podmieniasz grepa i wszystko działa
komentarz 21 czerwca 2019 przez assassin Gaduła (3,260 p.)
Ok. Dzięki. Jeszcze mam pytanie. W jakiej zmiennej zostanie zapisane te 150?
komentarz 21 czerwca 2019 przez RafalS VIP (122,820 p.)
echo "Podaj produkt"
read produkt

grep -oiP "(?<=${produkt},)\d+(\.)?\d?" produkt.csv

Zostanie od razu wypisane na ekran. Jak chcesz do zmiennej to uzyj:

wynik=$(grep -oiP "(?<=${produkt},)\d+(\.)?\d?" produkt.csv)

 

komentarz 21 czerwca 2019 przez assassin Gaduła (3,260 p.)
Wielkie dzięki. Jesteś moim mistrzem
+1 głos
odpowiedź 22 czerwca 2019 przez miro Pasjonat (23,870 p.)
W przyszłości używaj awk. To jest idealne narzędzie do tego typu zadań.

Podobne pytania

0 głosów
2 odpowiedzi 661 wizyt
+1 głos
1 odpowiedź 193 wizyt
+1 głos
2 odpowiedzi 309 wizyt
pytanie zadane 21 kwietnia 2021 w Systemy operacyjne, programy przez mialbiaek Użytkownik (510 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...