Eseguo svn status --show-updates
e poi voglio entrambi
- Q1:
ignora (non visualizzare) le righe che iniziano con?
- Q2:
visualizza solo le righe che iniziano con*
Nota che ci sono pochi spazi prima che si verifichi *. Ciò significa che*
non è il primo carattere della riga.
Come posso farlo?
Risposta accettata:
Puoi esprimere queste condizioni usando espressioni regolari e usare grep
per filtrare i risultati in base a quelli.
Il primo è ^?
. Il carato è un carattere speciale che rappresenta l'inizio di una linea; in modo che l'espressione corrisponda all'inizio della riga immediatamente seguito da un ?
.
Il secondo è ^ *\*
. Il *
è un carattere speciale che qualifica il carattere precedente:significa che il carattere precedente può apparire zero o più volte. Dal *
è un carattere speciale, quello che stai cercando deve essere sottoposto a escape, quindi \*
. Quindi quell'espressione corrisponderà all'inizio di una riga seguita da zero o più spazi, seguiti da un asterisco.
Per la tua prima condizione, usa -v
opzione per grep
per negare i risultati.
Quindi, finalmente,
svn status --show-updates | grep -v '^?'
o
svn status --show-updates | grep '^ *\*'
Le espressioni regolari sono molto potenti, quindi molti strumenti Unix possono usarle. Vale davvero la pena impararli. C'è un ottimo tutorial su regular-expressions.info.