Nowe posty

xx Problem ze sterownikami. (5)
2024-04-13, 21:25:16
xx Instalacja xfce4 (2)
2024-04-13, 16:20:17
xx Serie kompilacji bez instalacji dla “emerge” w Gentoo (2)
2024-04-08, 18:40:04
xx Plasma 6 w Neonie ssie trochę mniej ... (17)
2024-04-05, 10:03:46
xx Problem z Linux Lite po instalacji (3)
2024-04-03, 14:23:40
xx Jak właczyć num locka przy starcie systemu debian 12? (12)
2024-04-02, 17:43:54
xx Brak dźwieku w systemie. (5)
2024-04-02, 16:13:41
xx Dystrybucja pod HP Omen (7)
2024-03-29, 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
xx Ile pingwinów? (1)
2024-03-27, 08:59:24

Autor Wątek: sprawdzenie ostatniej niedzieli miesiąca  (Przeczytany 4697 razy)

papeusz

  • Gość
sprawdzenie ostatniej niedzieli miesiąca
« dnia: 2008-05-07, 17:17:27 »
Witam.

Jak z polecenia "cal" wydobyć informację którym dniem miesiąca jest ostatnia w niedziela? Czy ktoś potrafiłby napisać taki skrypt, zwracający numer tego dnia?

Byłbym wdzięczny za pomoc.

arctgx

  • Gość
sprawdzenie ostatniej niedzieli miesiąca
« Odpowiedź #1 dnia: 2008-05-07, 17:41:03 »
Zadanko domowe?

man awk - niekoniecznie jedyne wyjście. Może nawet sam bash byłby w stanie sobie z tym poradzić.

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
sprawdzenie ostatniej niedzieli miesiąca
« Odpowiedź #2 dnia: 2008-05-07, 19:01:51 »
dzien=`cal | grep NIEPUSTE LINIE REGEXPEM | tail OSTATNIA LINIA | awk PIERWSZA KOMÓRKA`
Dlaczego niepuste linie? Potestuj `cal` dla rożnych miesięcy, to zobaczysz, że czasem ostatnia linia jest pusta, a czasem zawiera kilka ostatnich dni miesiąca.

Reszta chyba jest zrozumiała, a przynajmniej powinna być po lekturze:
man grep
man tail / man head
man awk

Samo awk w sumie też wystarczy, ale tak jest bardziej bashowo :)

arctgx

  • Gość
sprawdzenie ostatniej niedzieli miesiąca
« Odpowiedź #3 dnia: 2008-05-07, 22:32:11 »
Jako "bashowy" określiłbym sposób, który nie potrzebuje nic ponad wbudowane polecenia powłoki, aby obrobić wyjście z cal. Ten korzysta z trzech zewnętrznych poleceń.

papeusz

  • Gość
sprawdzenie ostatniej niedzieli miesiąca
« Odpowiedź #4 dnia: 2008-05-08, 11:24:34 »
Serdecznie dziękuje, szczególnie "ULTR". To nie było żadne zadanko domowe, dawno już jestem po tym okresie życia :) Raczej nabywam dopiero doświadczenie związane ze skryptami powłoki. Brakowało mi tego usunięcia niepustych linii, teraz już wszystko jasne. Jeszcze raz dzięki.

arctgx

  • Gość
sprawdzenie ostatniej niedzieli miesiąca
« Odpowiedź #5 dnia: 2008-05-08, 19:11:41 »
Zabawiłem się i chyba jedna z bashowych wersji działa jak trza. Wyjście cal obrabiają tylko polecenia basha:
#!/bin/bash
# wywołanie: np.
# [b]. nazwa_pliku_z_tym_skryptem[/b]
# a potem
# [b]ostn miesiąc rok[/b]
ostn()
{
shopt -s extglob
local IFS=$'\\n';
#Ładujemy w tablicę M zawartość "cal miesiąc rok"
M=($(cal "$1" "$2"));
#Dopóki ostatni wiersz (czyli tydzień)
#oczyszczony z początkowych spacji jest pusty,
#pozbywamy się go
while [ ! ${M[$[${#M[*]}-1]]##*( )} ];
do
unset M[$[${#M[*]}-1]];
done;
# No i okrajamy wiersz do dwóch pierwszych znaków
echo "${M[$[${#M[*]}-1]]:0:2}"
}