Comment sortir le file et ignorer les lignes qui commencent par "?"?

Je fais svn status --show-updates et puis je veux soit

  • Q1: ignorer (ne pas afficher) les lignes qui commencent par ?
  • Q2: affiche uniquement les lignes commençant par * Notez qu'il y a peu d'espaces avant * se produit. Cela signifie que * n'est pas le premier caractère de la ligne.

Comment puis je faire ça?

Vous pouvez exprimer ces conditions en utilisant des expressions régulières et utiliser grep pour filterr les résultats en fonction de celles-ci.

Le premier est ^? . Le carat est un caractère spécial qui représente le début d'une ligne; de sorte que l'expression correspond au début de la ligne immédiatement suivie d'un ? .

Le second est ^ *\* . Le * est un caractère spécial qui qualifie le caractère précédent – cela signifie que le caractère précédent peut apparaître zéro ou plusieurs fois. Puisque * est un caractère spécial, celui que vous searchz doit être échappé, par conséquent, \* . Cette expression correspondra donc au début d'une ligne suivie de zéro ou plus d'espaces, suivis d'un astérisque.

Pour votre première condition, utilisez l'option -v pour grep pour annuler les résultats.

Donc finalement,

 svn status --show-updates | grep -v '^?' 

ou

 svn status --show-updates | grep '^ *\*' 

Les expressions régulières sont très puissantes, tant d'outils Unix peuvent les utiliser. Ils valent vraiment la peine d'apprendre. Il y a un grand tutoriel à regular-expressions.info .

Q1: Un moyen simple est le suivant

 svn st --show-updates -q 

st est l'abréviation de status et -q pour quiet: cela exclut les files qui ne sont pas déjà ajoutés dans le référentiel.

Q2: si vous n'avez pas nommé vos files avec *, vous pouvez également le faire:

 svn status --show_updates|grep -v \*