[bash]ilość wystąpień danego znaku

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
wizu
Piegowaty Guziec
Piegowaty Guziec
Posty: 4
Rejestracja: 13 sty 2010, 14:35
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86

[bash]ilość wystąpień danego znaku

Post autor: wizu »

Witam.
Chciałem sobie napisać pewien skrypt, który policzy mi ilość wystąpień danego znaku w linii, a następnie wyświetli mi tą ilość wyświetleń oraz ciąg, który zostaje po ostatnim wystąpieniu danego znaku, równocześnie obcinając ostatni znak.
Dla przykładu, mam taką linijkę:
ala ma kota, ale kot nie ma ali.
A poszukiwanym znakiem jest literka "a".
Skrypt powinien więc wyświetlić:
7, bo tyle jest literek "a"
li, bo to to pozostaje po ostanim "a" i bez ostatniego znaku.

Mam tylko tyle, czytanie pliku linijka po linijce, i chciałbym mieć te dane dla każdej linijki.

Kod: Zaznacz cały

for i in `cat lista_katalogow`; do 
	echo "$i"
done
Z góry dzięki za pomoc
Awatar użytkownika
thalcave
Przyjaciel
Przyjaciel
Posty: 821
Rejestracja: 08 lis 2006, 12:17
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Fluxbox
Architektura: x86

Odp: [bash]ilość wystąpień danego znaku

Post autor: thalcave »

Oczekujesz gotowca czy pomocy, jeśli tego drugiego to napisz konkretnie z czym masz problem.
GNU/Linux user
Na pytania na PW/e-mail nie udzielam odpowiedzi!
Szanujmy innych użytkowników!
Wesprzyj akcje: Temat rozwiązany -> dodajemy [solved]
wizu
Piegowaty Guziec
Piegowaty Guziec
Posty: 4
Rejestracja: 13 sty 2010, 14:35
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86

Odp: [bash]ilość wystąpień danego znaku

Post autor: wizu »

Myślałem, że jest już jakiś gotowy program, jakiś parametr, np. do wc, czy coś w tym rodzaju i ktoś podrzuci mi jakiś pomysł.

Jeśli jednak nie ma, to przydało by mi się chociaż coś, co pomogło by mi wyciągnąć, przeczytać daną linijkę znak po znaku, czy coś w tym rodzaju.
Awatar użytkownika
thalcave
Przyjaciel
Przyjaciel
Posty: 821
Rejestracja: 08 lis 2006, 12:17
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Fluxbox
Architektura: x86

Odp: [bash]ilość wystąpień danego znaku

Post autor: thalcave »

wedle życzenia

Kod: Zaznacz cały

sed "s/\(.\)/\1\n/g" plik
Komenda ta zamienia każdy znak (kropka to każdy znak) w niego samego z dołączonym znakiem nowej linii (\n).
GNU/Linux user
Na pytania na PW/e-mail nie udzielam odpowiedzi!
Szanujmy innych użytkowników!
Wesprzyj akcje: Temat rozwiązany -> dodajemy [solved]
otokan
Sędziwy Jeż
Sędziwy Jeż
Posty: 65
Rejestracja: 11 gru 2008, 11:20
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: [bash]ilość wystąpień danego znaku

Post autor: otokan »

Troche perlowej magii:

Kod: Zaznacz cały

m@ubu:/> perl -lne '$i=int s|.*?a||g; chop; print "$i $_";' <<< "ala ma kota, ale kot nie ma ali."
7 li
m@ubu:/> 
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 8 gości