Nowe posty

xx Problem ze sterownikami. (5)
2024-04-13, 21:25:16
xx Instalacja xfce4 (2)
2024-04-13, 16:20:17
xx Serie kompilacji bez instalacji dla “emerge” w Gentoo (2)
2024-04-08, 18:40:04
xx Plasma 6 w Neonie ssie trochę mniej ... (17)
2024-04-05, 10:03:46
xx Problem z Linux Lite po instalacji (3)
2024-04-03, 14:23:40
xx Jak właczyć num locka przy starcie systemu debian 12? (12)
2024-04-02, 17:43:54
xx Brak dźwieku w systemie. (5)
2024-04-02, 16:13:41
xx Dystrybucja pod HP Omen (7)
2024-03-29, 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
xx Ile pingwinów? (1)
2024-03-27, 08:59:24

Autor Wątek: Ciągi znaków -parsowanie tekstu.  (Przeczytany 5033 razy)

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2765
  • 1709
    • Zobacz profil
Ciągi znaków -parsowanie tekstu.
« dnia: 2014-04-20, 11:00:08 »
Przykład:
wymuszazatrzymaniajądrasystemu-nawetnakrótkiczas
Chciałbym policzyć ilość wystąpień słowa "  mu  "  w tym ciągu,
żeby potem użyć np.
cut -d'm'  -f1
cut -d'm'  -f2
cut -d'm'  -f3
....

I tu nasuwa mi się następne pytanie jak zmusić cut żeby użyć dłuższego
ciągu znaków np. "  mu  " zamiast tylko jednego?
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
Ciągi znaków -parsowanie tekstu.
« Odpowiedź #1 dnia: 2014-04-20, 11:46:32 »
> Chciałbym policzyć ilość wystąpień słowa " mu " w tym ciągu,
echo $CIAG | grep -o "mu" | wc -l
> żeby potem użyć np. cut -d'm' -f1 [...]
To chcesz policzyć, czy zrobić coś innego?
Może w takim razie wcale nie chcesz liczyć, a na przykład:
echo $CIAG | sed 's/mu/\\n/g'
Pytając nie zakładaj z góry metody, bo może być błędna, tylko przedstaw swój problem.
Tak samo jak nie pyta się "jak użyć X do zrobienia Y?", tylko "jak zrobić Y?".
Jak mądrze zadawać pytania: http://rtfm.killfile.pl/

> jak zmusić cut żeby użyć dłuższego ciągu znaków np. " mu " zamiast tylko jednego?
Nie da się. Cut przyjmuje tylko jednoznakowy delimiter.

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2765
  • 1709
    • Zobacz profil
Ciągi znaków -parsowanie tekstu.
« Odpowiedź #2 dnia: 2014-04-21, 09:30:23 »
- Pytanie było celowe, ponieważ nie mogłem znaleść tego w tutorialach

- Co do założenia metody masz rację, okazała się błędna

- Ciąg ten jest zmienny,
chciałbym wyciągnąć wszystkie zmienne pomiędzy "  mu  "   i  pierwszym  "  t  "
które występuje zaraz po " mu " .
Czyli w tym przypadku otzymałbym zmienne szaza i -nawe  .
szaza     -->   ...  mu  "szaza"  t  ...
-nawe     -->   ...  mu  "-nawe"  t  ...
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
Ciągi znaków -parsowanie tekstu.
« Odpowiedź #3 dnia: 2014-04-21, 11:07:09 »
Grepujesz wszystkie wystąpienia "mu...t", potem usuwasz początkowe "mu" i końcowe "t":
CIAG='wymuszazatrzymaniajądrasystemu-nawetnakrótkiczas'
echo "$CIAG" | grep -o 'mu[^t]*t' | sed -r 's/^mu|t$//g'

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2765
  • 1709
    • Zobacz profil
Ciągi znaków -parsowanie tekstu.
« Odpowiedź #4 dnia: 2014-04-21, 14:24:34 »
A dało by się użyć grep żeby pokazało wszyskie "mu...t...t"  ?
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.