1

Temat: dziwny błąd grep

Po długich poszukiwaniach w źle działającym skrypcie znalazłem polecenie powodujące problem:

 wynik=`echo $tekst | grep -o "[0-9]*"` 

Na "dużej" maszynie działa bezbłędnie, natomiast na routerku powoduje zwiechę.
Po dodaniu spacji w wyrażeniu regularnym problem ustępuje, czyli:

 wynik=`echo $tekst | grep -o " [0-9]*"` 

działa dobrze - oczywiście trzeba jakoś dodać tą spację przed wyszukiwaną liczbę...

2

Odp: dziwny błąd grep

U mnie działa pierwsze z wymienionych.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: dziwny błąd grep

Cezary napisał/a:

U mnie działa pierwsze z wymienionych.

Backfire (10.03.1-RC6, r29342)

root@OpenWrt:~# echo "tekst 123tekst" | grep -o " [0-9]*"
 123
root@OpenWrt:~#

czyli wszystko OK, natomiast:

root@OpenWrt:~# echo "tekst123tekst" | grep -o "[0-9]*"

wyrzuca bez końca (puste?) wyniki na konsolę.
Poniekąd słusznie, bo znak "*" oznacza dowolną ilość razy tego co przed nim, więc również zerową ilość... ale nie można przecież wyrzucać pustego wyniku, do tego więcej razy niż w ogóle długość tekstu do przeszukania... paradoks.

4

Odp: dziwny błąd grep

A zrób to bez -o...

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: dziwny błąd grep

Bez -o działa dobrze, ale ja potrzebuję wyciągnąć tę liczbę z tekstu a nie cały tekst.
Ja problem obszedłem już dawno. Piszę tylko po to, żeby ktoś inny się nie naciął i żeby sprawdzić czy błąd występuje w innych wersjach (jak widać - nie).

6

Odp: dziwny błąd grep

Występuje w backfire, bo tam jest stary buxybox który miał ten problem.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.