Nowe posty

Autor Wątek: Ciągi znaków -parsowanie tekstu.  (Przeczytany 5034 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.