Nowe posty

Autor Wątek: Polecenie sed.  (Przeczytany 2040 razy)

PgK

  • Gość
Polecenie sed.
« dnia: 2015-06-09, 15:22:30 »
Witam.

Potrzebuję pomocy w wypisaniu z lini tekstu słów od słowa poczatek do koniec. Nie wiem jak skonstruować polecenie sed, żeby uzyskać taki efekt.

Np ze zdania:
Ala poszła START dzisiaj do szkoły STOP w czerwonej spódniczce.

Wypisze: dzisiaj do szkoły.

 

Ogranicznikami jest słowo START i STOP.

 

Pozdrawiam

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2769
  • 1709
    • Zobacz profil
Polecenie sed.
« Odpowiedź #1 dnia: 2015-06-09, 18:27:59 »
A może być przy pomocy cut ?
Przykład:
$ echo " Ala poszła dzisiaj do szkoły w czerwonej spódniczce." | cut -d " " -f4-6

dzisiaj do szkoły
cut jest komendą do wycinania,
-d " "  --> znaczy text wedlug znaku w cudzyslowiu czyli spacji
-f4-6  --> wypisuje od 4 do 6 znaku , w tym przypadku od 4 do 6 spacji

Cut niestety nie potrafi odcinać od tyłu, dlatego używam rev ,
jesli jest to istotne.
 rev zamienia kolejnosc kazdego znaku
 echo "12345" | rev
 54321
przykład:
 echo "drakx-installer-binaries-probe-1.60-3pclos2015
" | rev | cut -d"-" -f 3- | rev

drakx-installer-binaries-probe
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
Polecenie sed.
« Odpowiedź #2 dnia: 2015-06-10, 00:29:48 »
Jeśli sed-em, to wystarczy napisać wyrażenie regularne oznaczając podwyrażenie (nawiasami) będące szukanym tekstem.
A następnie zamienić cały tekst na ten znaleziony podciąg (\\1):
text="Ala poszła START dzisiaj do szkoły STOP w czerwonej spódniczce"
echo "$text" | sed -E 's/.*START(.*)STOP.*/\\1/'

PgK

  • Gość
Polecenie sed.
« Odpowiedź #3 dnia: 2015-06-13, 13:15:04 »
Dziękuję za odpowiedzi. Przepraszam, że nie odpisałem wcześniej, ale nie mogłem. Cut odpada ponieważ z tego co wiem separatorem musi być pojedynczy znak.  Z problemem tym poradziłem sobie poleceniem awk. Dzięki także za odpowiedź związaną z wyrażeniami regularnymi, tego właśnie szukałem.

Pozdrawiam!