ďťż
 
 
   Coś podobnego jak explode() z PHP tylko pod Linuksa
 
 

Tematy

 
    
 

 

 

 

Coś podobnego jak explode() z PHP tylko pod Linuksa





R_Przemek - 07-01-2009 20:56
Witam.
Mam dany tekst:
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: $tekst = 'ab [,] cd [,] ef [,] gh [,] ij';

$exp = explode('[,]', $tekst);

$exp[2]; //-- czyli ef (trzecia część tekstu) Ma ktoś może jakiś pomysł jak rozwiązać ten problem?



lis6502 - 07-01-2009 21:00
Skoro umiesz pisać w php to napisz odpowiedni skrypt, zainstaluj php5-cli i uruchom napisany skrypt.



R_Przemek - 07-01-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 - 07-01-2009 21:24
#!/bin/bash
Podstawy.
Nie otwieraj przed Gwiazdką.

Co 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.

Możesz: jeszcze odpalić pytona, perla, multum tego.
Jeszcze tak mi się nasunęło klik!



Inquistor - 08-01-2009 21:19
Coś takiego?
echo ab [,] cd [,] ef [,] gh [,] | awk {'print $5'}



lis6502 - 08-01-2009 21:30
Ciutkę pokiełbasiłeś składnię, ale z grubsza tak
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
awk {'print $5'}
awk '{print $5}'



Inquistor - 08-01-2009 21:51
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="\[,\] "



lis6502 - 08-01-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 kej=` (...) Nie zgłębiałem tego problemu, skrypt spełnia swoje zadanie i to mi wystarcza.



snah - 10-01-2009 10:33

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="\[,\] "
Nie wiem czemu, ale mam taki błąd: 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:
echo ab [,] cd [,] ef [,] gh [,] | awk '{print $3}' FS="[[],] "



Inquistor - 10-01-2009 11:11

U was to działa dobrze? No, u mnie działa prawidłowo.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • minister.pev.pl

  •  

     


     

     
    Copyright 2003. MĂłj serwis