Potrzebujesz pomocy z C, C++, perl, python, itp.
R_Przemek
Posty: 54 Rejestracja: 12 lipca 2008, 16:02
Post
autor: R_Przemek » 07 stycznia 2009, 20:56
Witam.
Mam dany tekst:
ab [,] cd [,] ef [,] gh [,] ij
i teraz
chciałbym w
Linuksie wypisać trzecią część tego tekstu, czyli "ef". Tekst jest pofragmentowany znakami [,] i na ich podstawie "ef" jest trzecią częścią tekstu.
W PHP było by to tak:
Kod: Zaznacz cały
$tekst = 'ab [,] cd [,] ef [,] gh [,] ij';
$exp = explode('[,]', $tekst);
$exp[2]; //-- czyli ef (trzecia część tekstu)
M a ktoś może jakiś pomysł jak rozwiązać ten problem?
lis6502
Member
Posty: 1798 Rejestracja: 05 listopada 2008, 20:14
Lokalizacja: Miasto Szybowców
Post
autor: lis6502 » 07 stycznia 2009, 21:00
Skoro umiesz pisać w php to napisz odpowiedni skrypt, zainstaluj php5-cli i uruchom napisany skrypt.
R_Przemek
Posty: 54 Rejestracja: 12 lipca 2008, 16:02
Post
autor: R_Przemek » 07 stycznia 2009, 21:07
A w jakim języku mogę napisać skrypt żeby można było go uruchomić pod konsolą - tzn ./skrypt?
php5-cli niestety odpada. Nie mogę instalować dodatkowych kompilatorów... muszę korzystać z tego co jest w systemie.
lis6502
Member
Posty: 1798 Rejestracja: 05 listopada 2008, 20:14
Lokalizacja: Miasto Szybowców
Post
autor: lis6502 » 07 stycznia 2009, 21:24
#!/bin/bash
P odstawy.
N ie otwieraj przed Gwiazdką.
C o do problemu będącego tematem - rozwiązaniem będzie sed lub awk.
Na początek spróbuj:
zaznajomić się z awkiem - jest jak najbardziej
przyjazny dla użytkownika moim zdaniem.
M ożesz: jeszcze odpalić pytona, perla, multum tego.
Jeszcze tak mi się nasunęło
klik!
Inquistor
Beginner
Posty: 122 Rejestracja: 25 września 2007, 20:48
Post
autor: Inquistor » 08 stycznia 2009, 21:19
Coś takiego?
Kod: Zaznacz cały
echo ab [,] cd [,] ef [,] gh [,] | awk {'print $5'}
lis6502
Member
Posty: 1798 Rejestracja: 05 listopada 2008, 20:14
Lokalizacja: Miasto Szybowców
Post
autor: lis6502 » 08 stycznia 2009, 21:30
Coś takiego?
Kod: Zaznacz cały
echo ab [,] cd [,] ef [,] gh [,] | awk {'print $5'}
Ciutkę pokiełbasiłeś składnię, ale z grubsza
tak
wypisać trzecią część tego tekstu
skoro chcesz wypisać
trzecie pole, musisz wyjaśnić awkowi czym te pola są oddzielane; pomoże Ci w tym parametr
--field-separator
Jeszcze taka sprawa
niepoprawnie pisze: awk {'print $5'}
poprawnie pisze: awk '{ print $5}'
Inquistor
Beginner
Posty: 122 Rejestracja: 25 września 2007, 20:48
Post
autor: Inquistor » 08 stycznia 2009, 21:51
Nie jestem biegły w posługiwaniu się awk, ale poprawiłem w miare swoich możlwiości ta linijkę ;-)
Kod: Zaznacz cały
echo ab [,] cd [,] ef [,] gh [,] | awk '{print $3}' FS="\[,\] "
lis6502
Member
Posty: 1798 Rejestracja: 05 listopada 2008, 20:14
Lokalizacja: Miasto Szybowców
Post
autor: lis6502 » 08 stycznia 2009, 22:13
No i super, ale pamiętaj, że niekoniecznie to zadziała wewnątrz jakiegoś skryptu, na przykład w
moim faq musiałem posłużyć się sztuczką z zapisywaniem do pliku - przeanalizuj działanie
Nie zgłębiałem tego problemu, skrypt spełnia swoje zadanie i to mi wystarcza.
snah
Beginner
Posty: 103 Rejestracja: 19 lutego 2008, 09:09
Post
autor: snah » 10 stycznia 2009, 10:33
Inquistor pisze: Nie jestem biegły w posługiwaniu się awk, ale poprawiłem w miare swoich możlwiości ta linijkę ]echo ab [,] cd [,] ef [,] gh [,] | awk '{print $3}' FS="\[,\] "
[/code]
Nie wiem czemu, ale mam taki błąd:
Kod: Zaznacz cały
awk: cmd. line:1: warning: escape sequence `\[' treated as plain `['
awk: cmd. line:1: warning: escape sequence `\]' treated as plain `]'
U was to działa dobrze?
Metodą prób i błędów udało mi się w ten sposób:
Kod: Zaznacz cały
echo ab [,] cd [,] ef [,] gh [,] | awk '{print $3}' FS="[[],] "
Inquistor
Beginner
Posty: 122 Rejestracja: 25 września 2007, 20:48
Post
autor: Inquistor » 10 stycznia 2009, 11:11
snah pisze: U was to działa dobrze?
No, u mnie działa prawidłowo.