Não tenho certeza de como o processamento de texto deve ser feito de maneira adequada, então deixe-me perguntar.
Eu tenho este arquivo: ~/.config/mpv/input.conf
possivelmente contendo outras opções, bem como v disable
.
Se eu quiser remover essa linha do arquivo, suponho que poderia fazer:
grep -v -q -F 'v disable' input.conf; echo $?
1
Onde - se o arquivo não contiver mais nada como agora, ele retornaria 1 ( a página de manual diz 1
- "Nenhuma linha foi selecionada."), o que me incomoda, pois não consigo executar um arquivo if-statement
.
Então eu teria que armazenar $?
após o comando e depois verificar se é maior que 1 para erro.
Além disso, não está claro para mim se substituir o arquivo no local é uma boa ideia:
grep ... input.conf > input.conf
Se houver alguma outra forma, me avise. Além disso, se partes de minhas sugestões estiverem corretas, informe-me.
Obrigado e felicidades.
Normalmente,
grep
retornará 0 (verdadeiro) se uma ou mais linhas corresponderem ao RE fornecido. O-v
sinalizador inverte isso, portanto,grep
considerará todas as linhas que não correspondem à RE como bem-sucedidas. Nesse caso, a única vez em que você obterá uma falha em umv
-match é quando houver exatamente uma linha na fonte e corresponder exatamente ao seu RE.Portanto, remover uma linha correspondente e também retornar uma indicação de que a alteração foi aplicada é um pouco mais complicado:
Uma sugestão alternativa de Valentin Bajrami foi feita em um comentário para
ed
modificar o arquivo diretamente no local:Observe que, nesse caso, a string correspondente é tratada como um RE em vez de um literal.