Strona 1 z 1

[BASH] Wyrazenie regularne i konstrukcja IF

: 04 kwie 2009, 19:54
autor: InterNeo
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.

Odp: [BASH] Wyrazenie regularne i konstrukcja IF

: 04 kwie 2009, 20:31
autor: хur
w tak prostym przypadku nie lepiej było by po prostu sprawdzić czy ostatni znak to @ ?

Odp: [BASH] Wyrazenie regularne i konstrukcja IF

: 04 kwie 2009, 20:39
autor: InterNeo
O tym mówie, ale nie znam składni basha i nie wiem jak to zapisac.

Odp: [BASH] Wyrazenie regularne i konstrukcja IF

: 04 kwie 2009, 20:51
autor: хur

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

Odp: [BASH] Wyrazenie regularne i konstrukcja IF

: 04 kwie 2009, 20:52
autor: InterNeo
No i dziekuje uprzejmie :]

Jeszcze gdybys powiedzial jak to sie czyta
${cel:$((${#cel}-1))} = @

ze wskazniem na dwukropek krzyzyk i co robia nawiasy okragle

Odp: [BASH] Wyrazenie regularne i konstrukcja IF

: 04 kwie 2009, 20:59
autor: хur
$(( cośtam )) pozwala na użycie arytmetyki ale właśnie odkryłem że wewnątrz ${} nie jest koniecznie czyli można napisać:

Kod: Zaznacz cały

${cel:${#cel}-1} = @
, 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.

Odp: [BASH] Wyrazenie regularne i konstrukcja IF

: 04 kwie 2009, 21:03
autor: InterNeo
A gdybym chcial zrobic np. "Jesli nie zawiera @ to"
(Nie ze jako else... tylko jak takie wyrazenie zapisac)

Odp: [BASH] Wyrazenie regularne i konstrukcja IF

: 04 kwie 2009, 21:23
autor: хur
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" =~ @ ]]

Odp: [BASH] Wyrazenie regularne i konstrukcja IF

: 04 kwie 2009, 21:25
autor: InterNeo
dzieki <sciana> wpisywalem ten wykrzyknik w kazde miejsce tylko nie w to...

Odp: [BASH] Wyrazenie regularne i konstrukcja IF

: 25 lis 2009, 21:20
autor: artur404
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?

Odp: [BASH] Wyrazenie regularne i konstrukcja IF

: 26 lis 2009, 06:46
autor: jacekalex

Kod: Zaznacz cały

iconv --from-code=ISO-8859-1 --to-code=UTF-8 iso.txt > utf.txt
Możesz do skryptu wrzucić tą komendę - gdzie zamiast

Kod: Zaznacz cały

--from-code=ISO-8859-1
dasz zmiennną wygenerowaną programem enca -(jest w repo)
Przykład:

Kod: Zaznacz cały

:~/Pulpit/ftp$ enca -e plik.txt
UTF-8
Zresztą enca też ma możliwosć konwersji kodowania.

Kod: Zaznacz cały

man enca
Poskładanie tego w skrypt nie jest specjalnie trudne - poradzisz sobie. :)

Pozdrawiam
;)

Odp: [BASH] Wyrazenie regularne i konstrukcja IF

: 02 gru 2009, 22:25
autor: artur404
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 : )