Programowanie > Bash, skrypty powłoki
podstawowy problem - skrypt bash
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
Idź do wersji pełnej