Eu tenho uma longa lista de algo como:
AllowedUsers [email protected] [email protected] [email protected] [email protected] .....
tudo em linha única. Basicamente é um monte de username@ip
Eu queria encontrar e substituir apenas usando seu nome de usuário (por exemplo, aaa) e substituí-lo por nada.
Eu testei meu regex ( RegExr ) e funciona como eu esperava. Mas quando eu tento fazer isso sed
, não funcionou.
$ sed 's/bbbb11.*?(?= )//' test
AllowedUsers [email protected] [email protected] [email protected] [email protected] .....
Eu também tentei usar bbbb11.*?(?=[[:space:]])
, também não funcionou.
Perdi alguma coisa?
As asserções Positive(
?=
) e Negative lookahead(?!
) funcionam bem apenas em uma ferramenta que suporta extensões PCRE . Nem GNUsed
nem POSIX suportam essas extensões de biblioteca. Você precisaperl
que o suporta fora da caixaOu você pode muito bem conseguir o mesmo sem o suporte a regex. Para tais substituições triviais, você pode fazer algo como abaixo, que funciona tanto no POSIX quanto no GNU
sed