Strona 1 z 1

[bash]sed - wyciagnanie ciagu cyfr z ciagu znakow

: 19 maja 2013, 22:49
autor: seav
Cześć.
Problem jest następujący, mam przykładowy ciąg znaków:

Kod: Zaznacz cały

abc (120 122 950 948 324 330 390 384) (14 11 0) sDs(1 1 1)
Muszę uzyskać z niego zawartość pierwszego nawiasu :

Kod: Zaznacz cały

120 122 950 948 324 330 390 384
Bez żadnych innych znaków. I tak siedzę i się męczę....

Może ktoś na forum bawił się sed`em i wie jak to zrobić ?

Pozdrawiam
seav.

Re: [bash]sed - wyciagnanie ciagu cyfr z ciagu znakow

: 19 maja 2013, 23:30
autor: beluosus
Łatwiej w perlu, bo można włączyć tryb non-greedy:

Kod: Zaznacz cały

echo 'abc (120 122 950 948 324 330 390 384) (14 11 0) sDs(1 1 1)' | perl -pe 's|.*?\(||; s|\).*||'
Najpierw usunięcie od początku do nawiasu, a później od nawiasu do końca. Albo jak wolisz jedną podmianą:

Kod: Zaznacz cały

's|.*?\(||; s|\).*||'

Re: [bash]sed - wyciagnanie ciagu cyfr z ciagu znakow

: 20 maja 2013, 09:25
autor: seav
Dzięki serdeczne kolego, działa tak jak powinno. Niestety w perlu nic nigdy nie pisalem :).

Pozdrawiam
seav.

Re: [bash]sed - wyciagnanie ciagu cyfr z ciagu znakow

: 20 maja 2013, 09:31
autor: ethanak
A bez regexpów i seda:

Kod: Zaznacz cały

echo 'abc (120 122 950 948 324 330 390 384) (14 11 0) sDs(1 1 1)' | tr ')' '(' | awk -F'(' '{print $2}'

Re: [bash]sed - wyciagnanie ciagu cyfr z ciagu znakow

: 20 maja 2013, 17:17
autor: Mały 1

Kod: Zaznacz cały

echo 'abc (120 122 950 948 324 330 390 384) (14 11 0) sDs(1 1 1)' | awk -F '[()]' '{print $2}'