Соответствие регулярному выражению с использованием SED в bash - PullRequest
0 голосов
/ 19 января 2012

Я хочу сопоставить следующую строку с регулярным выражением в sed:

db=connect_str=DBI:SQLAnywhere:ENG=ABC1_hostname12;DBN=ABC12;UID=USERID;PWD=passwd123;LINKS=tcpip{host=10.11.12.13:1234}

Я использую регулярное выражение:

sed -n '/ABC1_.+;/p' Config/db_conn.cfg

но это не работает. С другой стороны, это работает, если я использую:

sed -n '/ABC1_.*;/p' Config/db_conn.cfg

Может кто-нибудь объяснить, почему это не работает? И есть ли другой способ сопоставить его?

1 Ответ

3 голосов
/ 19 января 2012

Это потому, что по умолчанию sed является базовым регулярным выражением, для которого требуется экранирование +, или же оно представляет собой литерал + вместо регулярного выражения +:

sed -n '/ABC1_.\+;/p' Config/db_conn.cfg

Вы знакомы с try sed -r -n (расширенное регулярное выражение), а затем вы можете сделать:

sed -r -n '/ABC1_.+;/p' Config/db_conn.cfg
...