Como enviar uma palavra em particular no arquivo, se estiver presente?

0

Estou fazendo um script simples no qual eu ligo true para false se true estiver presente no arquivo ou vice-versa se false estiver presente no arquivo, detalhes aqui Agora eu quero saída, o que é o valor após a mudança ou seja, se eu mudei false para true deve saída true . Agora eu estou usando duas declarações -

grep "<active>false" settings.xml

grep "<active>true" settings.xml

Mas imprime <active> com a saída (como esperado), mas existe uma maneira melhor de fazer isso?

Nota lateral - Estou usando <active>true em grep porque minha regex é do tipo <active>([a-z]*)</active>

    
por monster 31.07.2018 / 07:53

1 resposta

1

Se você está usando o GNU grep , você pode usar expressões regulares Perl com um olhar positivo afirmação:

grep -Po "(?<=<active>)(false|true)" settings.xml

Isso gerará apenas false ou true . <active> será correspondido, quando for seguido por true ou false , mas não será incluído na saída.

Mas, idealmente, você deve usar um analisador baseado em XML, como sugerido em o comentário de uzsolt .

    
por 31.07.2018 / 11:30