Wpis z mikrobloga

@Wykopowiedz: Nie pamiętam, zawsze googluję.

Na przykładzie:

if [[ $(echo 9000/tcp 9001/tcp 9002/tcp) =~ " ?9000/tcp ?" ]] ; then echo 1 ; else echo 0 ;fi

To działa ale nie ma warunku na początek linii.

Jak coś to
"(^| )?9000/tcp"
Na pewno nie zadziała poprawnie. Trzeba by się zastanowić jak to dobrze zrobić i czy wymaganym nie będzie rozbicia regexa na dwie alternatywy z ^ i z ' ' na
czemu nie zadziała "(^| )?9000/tcp" skoro na normalnych regexach działa... regexr.com/53ekm


@Wykopowiedz: sprawdziłem i wiem czemu... Bo to błędny regex. Robisz alternatywę na ^ lub ' ' i dajesz warunek, że wcale nie musi go tam być. Więc jest łapane "^9000" lub "* 9000" lub "*9000".

Prawidłowy regex to: (^| )9000/tcp ? bo chesz łapać tylko spację lub tylko początek linii.
A nie lepiej dać spację przed 9000 zamiast się bawić w regexpy?


@RocketMann112: pomijając fakt czy regexpy tu mają sens czy nie to z tego co op napisał wcale nie musi być spacji na początku więc i tak będziesz musiał wrzucić regex w grepa.

@Wykopowiedz: Wyjaśnienie jeszcze do tego co napisałem wyżej. Miałem na myśli to, że:

(^| )?9000/tcp chwyci ci 19000/tcp
ale
(^| )9000/tcp już nie chwyci 19000/tcp

Możesz