Programowanie > Bash, skrypty powłoki

podstawowy problem - skrypt bash

<< < (2/2)

xis:
2006-05-27 18:12:48 bruny napisał:

> dzieki, w moim skrypcie moze zamiast miesiaca byc Mar, mar,
 > ale jest on na pierwszej pozycji  m/dd/rok, wiec rozwiazalem to tak,
 >
 > data=27/05/2006
 > dzien=`echo $data | cut -d "-" -f1-1`
 >
 > ale problem bedzie jak ktos wprowadzi / zamiast - ,
 > jest jakas opcja zeby w tej komendzie bylo / lub -  ??
 > z gory dzieki
 >
 >
Właśnie to jest najmniej fajne w Twoim zagadnieniu :)
Gdyby delimiter był jeden i stały to wystarczyłoby użycie awk, albo cut w Twoim wykonaniu. Wydaje mi się, że najlepiej będzie jeśli datę przepuścisz przez wyrażenie regularne i wyciągniesz delimiter. Wtedy możesz zamiast '-' użyć $delimiter.
Do wykorzystania wyrażeń regularnych możesz użyć np. grep'a (z opcją -e).

Ostatecznie możesz czytać to tak jak ja to robiłem (czyli na sztywno 'trafiając' w dane pola), tyle, że zamiast wybierać znaki numerując je od początku, możesz czytać od końca (rok=cztery ostatnie znaki itd.).

Myślę, że to rugie rozwiązanie jest stabilniejsze ;)
Powodzenia

bruny:
uzylem ; nowy="$(echo $stary | tr '/' '-')"
i po klopocie, dzieki za pomoc i pozdrawiam

xis:
2006-05-27 20:51:43 bruny napisał:

> uzylem ; nowy="$(echo $stary | tr '/' '-')"
 > i po klopocie, dzieki za pomoc i pozdrawiam

Fakt :) Nie wpadłem na to, ze delimitery możesz sobie zmienić ;)
Możesz też użyć sed'a (jak to masz w zadaniu):
nowy=`echo $stary | sed s:/:-:g`
(to sprawi, że będziesz miał tylko jeden rodzaj delimitera: '-'),
a później 'lecieć' jak już pisałeś.
Gratuluję tego pomysłu :)

Nawigacja

[0] Indeks wiadomości

[*] Poprzednia strona

Idź do wersji pełnej