No meu arquivo xml, tenho muitas tags de localização. por exemplo:
<location>file:///home/faizal/Music/THE%20DOORS/Studio%20albums/2007%20Infected%20Mushroom%20Presents%20-%20The%20Doors%20Remixed%20(2%20CD)%20@320/CD2/07%20Break%20on%20Through%20(Infected%20Mushroom%20Guitar%20Rmx).mp3</location>
Gostaria de encontrar todas as tags de localização que não começam com file:///home/faizal/Music/
. Como eu escreveria um comando vim para fazer isso?
O comando abaixo não exclui linhas com o file:///home/faizal/Music/
padrão. O que estou fazendo de errado?
/^\(.*\<location\c\>\)\&\(.*file\:\/\/\/home\/home\/faizal\/Music\)\@!
Responder1
Usar :
/\v(.*\<location\>)&(.*file:\/\/\/home\/faizal\/Music)@!
\v
significa que no padrão seguinte todos os caracteres ASCII, exceto '0'-'9', 'a'-'z', 'A'-'Z' e '_', têm um significado especial. "muito mágico"@!
é uma afirmação negativa.
corresponde a qualquer caractere*
corresponde a qualquer número do átomo anterior&
é o booleano AND()
está se agrupando em um átomo/
é o comando localizar\
é o caractere de escape
Referência:http://vimdoc.sourceforge.net/htmldoc/pattern.html,https://stackoverflow.com/questions/3883985/vim-regex-how-to-search-for-a-and-b-not-c
Obrigado @muru