[BASH] Wyrazenie regularne i konstrukcja IF
-
- Piegowaty Guziec
- Posty: 5
- Rejestracja: 12 maja 2008, 00:37
- Płeć: Mężczyzna
- Wersja Ubuntu: 8.04
- Środowisko graficzne: GNOME
[BASH] Wyrazenie regularne i konstrukcja IF
Potrzebuje napisac IF'a a skrypice bash'a ktory bedzie mi sprawdzal czy zmienna $cel ma na koncu znak @. Jezeli takowy wystapi gdzies wczesniej ma nie brac tego pod uwage... Prawda - tylko dla @ na samym koncu. Jak takie cos napisac? // W sensie nie samo wyrazenie regularne prosze o pomoc przy napisaniu calego ifa.
- хur
- Sędziwy Jeż
- Posty: 79
- Rejestracja: 15 sty 2008, 23:40
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Inne
Odp: [BASH] Wyrazenie regularne i konstrukcja IF
w tak prostym przypadku nie lepiej było by po prostu sprawdzić czy ostatni znak to @ ?
-
- Piegowaty Guziec
- Posty: 5
- Rejestracja: 12 maja 2008, 00:37
- Płeć: Mężczyzna
- Wersja Ubuntu: 8.04
- Środowisko graficzne: GNOME
Odp: [BASH] Wyrazenie regularne i konstrukcja IF
O tym mówie, ale nie znam składni basha i nie wiem jak to zapisac.
- хur
- Sędziwy Jeż
- Posty: 79
- Rejestracja: 15 sty 2008, 23:40
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Inne
Odp: [BASH] Wyrazenie regularne i konstrukcja IF
Kod: Zaznacz cały
~$ cel=Berlin@
~$ if [[ ${cel:$((${#cel}-1))} = @ ]] ; then echo 'ognia!' ; else echo 'wtf?' ; fi
ognia!
~$ cel=Pacanów
~$ if [[ ${cel:$((${#cel}-1))} = @ ]] ; then echo 'ognia!' ; else echo 'wtf?' ; fi
wtf?
EDIT:
właśnie sprawdziłem $(()) można pominąć:
Kod: Zaznacz cały
if [[ ${cel:${#cel}-1} = @ ]] ; then echo 'ognia!' ; else echo 'wtf?' ; fi
-
- Piegowaty Guziec
- Posty: 5
- Rejestracja: 12 maja 2008, 00:37
- Płeć: Mężczyzna
- Wersja Ubuntu: 8.04
- Środowisko graficzne: GNOME
Odp: [BASH] Wyrazenie regularne i konstrukcja IF
No i dziekuje uprzejmie :]
Jeszcze gdybys powiedzial jak to sie czyta
${cel:$((${#cel}-1))} = @
ze wskazniem na dwukropek krzyzyk i co robia nawiasy okragle
Jeszcze gdybys powiedzial jak to sie czyta
${cel:$((${#cel}-1))} = @
ze wskazniem na dwukropek krzyzyk i co robia nawiasy okragle
- хur
- Sędziwy Jeż
- Posty: 79
- Rejestracja: 15 sty 2008, 23:40
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Inne
Odp: [BASH] Wyrazenie regularne i konstrukcja IF
$(( cośtam )) pozwala na użycie arytmetyki ale właśnie odkryłem że wewnątrz ${} nie jest koniecznie czyli można napisać: , czyta się to tak:
${cel:liczba} traktuje cel jak napis i usuwa z rozwinięcia znaki o indeksie mniejszym niż 'liczba', znaki w napisie są indeksowane od 0. Jako 'liczba' podaję długość 'cel', czyli ${#cel} a ponieważ indeksowanie jest od 0 a ja chcę ostatni znak więc od długości odejmuję 1.
Kod: Zaznacz cały
${cel:${#cel}-1} = @
${cel:liczba} traktuje cel jak napis i usuwa z rozwinięcia znaki o indeksie mniejszym niż 'liczba', znaki w napisie są indeksowane od 0. Jako 'liczba' podaję długość 'cel', czyli ${#cel} a ponieważ indeksowanie jest od 0 a ja chcę ostatni znak więc od długości odejmuję 1.
-
- Piegowaty Guziec
- Posty: 5
- Rejestracja: 12 maja 2008, 00:37
- Płeć: Mężczyzna
- Wersja Ubuntu: 8.04
- Środowisko graficzne: GNOME
Odp: [BASH] Wyrazenie regularne i konstrukcja IF
A gdybym chcial zrobic np. "Jesli nie zawiera @ to"
(Nie ze jako else... tylko jak takie wyrazenie zapisac)
(Nie ze jako else... tylko jak takie wyrazenie zapisac)
- хur
- Sędziwy Jeż
- Posty: 79
- Rejestracja: 15 sty 2008, 23:40
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Inne
Odp: [BASH] Wyrazenie regularne i konstrukcja IF
nie zawiera w ogóle, czy na ostatnim miejscu ? w 2 przypadku możesz "zaprzeczyć" wyrażenie które już masz (wykrzyknikiem). Jeśli ma nie zawierać w ogóle to prościej będzie użyć wyrażenia regularnego (i też je zwykrzyknikować):
Kod: Zaznacz cały
[[ ! "$cel" =~ @ ]]
-
- Piegowaty Guziec
- Posty: 5
- Rejestracja: 12 maja 2008, 00:37
- Płeć: Mężczyzna
- Wersja Ubuntu: 8.04
- Środowisko graficzne: GNOME
Odp: [BASH] Wyrazenie regularne i konstrukcja IF
dzieki <sciana> wpisywalem ten wykrzyknik w kazde miejsce tylko nie w to...
-
- Piegowaty Guziec
- Posty: 14
- Rejestracja: 30 gru 2007, 20:34
- Płeć: Mężczyzna
- Wersja Ubuntu: 10.04
- Środowisko graficzne: GNOME
Odp: [BASH] Wyrazenie regularne i konstrukcja IF
Chciałbym się podpiąć pod temat. Podejrzewam że Wam odpowiedź zajmie 5 min. a ja nie stety jestem zielony na razie w takie sprawy.
Mam plik .txt. a w nim zamiast polskich znaków, jakieś krzaki. Chciałbym napisać skrypt podmieniający je na polskie. Próbowałem w programach typu gedit, eclipse, ale tam nie umiem zrobić co następuje.
Mam słowo no, "a.ć". Chciałbym zrobić z niego "ałć". Więc potrzebuję wyrażenia
if [dowolna alfanumeryczna]\.[dowolna alfanumeryczna] REPLACE \. = ł.
ale wszystkie replace jakie mam to robią mi kasują [dowolna alfanumeryczna]\.[dowolna alfanumeryczna] w "ł" czyli z a.ć wychodzi po prostu ł.
jakiś pomysł albo sposób żeby draństwo zostawiało poprzedni i następny znak za podmieniany?
Mam plik .txt. a w nim zamiast polskich znaków, jakieś krzaki. Chciałbym napisać skrypt podmieniający je na polskie. Próbowałem w programach typu gedit, eclipse, ale tam nie umiem zrobić co następuje.
Mam słowo no, "a.ć". Chciałbym zrobić z niego "ałć". Więc potrzebuję wyrażenia
if [dowolna alfanumeryczna]\.[dowolna alfanumeryczna] REPLACE \. = ł.
ale wszystkie replace jakie mam to robią mi kasują [dowolna alfanumeryczna]\.[dowolna alfanumeryczna] w "ł" czyli z a.ć wychodzi po prostu ł.
jakiś pomysł albo sposób żeby draństwo zostawiało poprzedni i następny znak za podmieniany?
- jacekalex
- Gibki Gibbon
- Posty: 4707
- Rejestracja: 17 cze 2007, 02:54
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: MATE
- Architektura: x86_64
Odp: [BASH] Wyrazenie regularne i konstrukcja IF
Kod: Zaznacz cały
iconv --from-code=ISO-8859-1 --to-code=UTF-8 iso.txt > utf.txt
Kod: Zaznacz cały
--from-code=ISO-8859-1
Przykład:
Kod: Zaznacz cały
:~/Pulpit/ftp$ enca -e plik.txt
UTF-8
Kod: Zaznacz cały
man enca

Pozdrawiam

Problemy rozwiązujemy na forum nie na PW -> Niech inni na tym skorzystają.
Komputer jest jak klimatyzacja - gdy otworzysz okna, robi się bezużyteczny...
Linux User #499936
Inny OS: Gentoo Linux
Komputer jest jak klimatyzacja - gdy otworzysz okna, robi się bezużyteczny...
Linux User #499936
Inny OS: Gentoo Linux

-
- Piegowaty Guziec
- Posty: 14
- Rejestracja: 30 gru 2007, 20:34
- Płeć: Mężczyzna
- Wersja Ubuntu: 10.04
- Środowisko graficzne: GNOME
Odp: [BASH] Wyrazenie regularne i konstrukcja IF
Kodowanie pliku mam w UTF-8, jednak mimo to mam krzaki. Z tego co odkryłem, to w pdfie zastosowano czcionkę PHelvetica która stosowana jest na mac'ach a nie PC'tach. Stąd jakkolwiek bym nie konwertował, to zawsze znajdzie się jakiś krzak.
Teraz zastanawiam się nad importem fontów, ale to temat na inny dział
Ale dzięki wielkie za polecony program. Całkiem mocarne cudo : )
Teraz zastanawiam się nad importem fontów, ale to temat na inny dział

Ale dzięki wielkie za polecony program. Całkiem mocarne cudo : )
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 15 gości