Nowe posty

xx FirebirdSQL server w xinetd (1)
Wczoraj o 08:31:48
xx [SOLVED] Poczta Linux.pl (9)
2022-08-09, 15:09:29
xx Dostęp z komputerów z windowsem do plików udostępnionych na serwerze linux (samb (0)
2022-08-08, 20:27:55
xx brak uprawnienia do zamontowanej partycji ntfs - elementaryOS 6,1 (5)
2022-08-08, 06:36:07
xx Jak zainstalować sterowniki do karty sieciowej TP LINK WN350GD (1)
2022-08-04, 05:55:46
xx Ubuntu vs Fedora (1)
2022-07-26, 03:40:58
xx virtualization technology (1)
2022-07-25, 21:27:10
xx Migracja z centos 6 na centos 7 (3)
2022-07-25, 07:31:19
xx akonadi w KDE5 (10)
2022-07-22, 23:34:05
xx Alternatywa dla Delphi (7)
2022-07-22, 15:27:42

Autor Wątek: sprawdzenie ostatniej niedzieli miesiąca  (Przeczytany 4576 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}"
}