Como enviar arquivos e ignorar linhas que começam com “?”?

4

Eu faço svn status --show-updates e depois quero

  • Q1: ignorar (não exibir) linhas que começam com ?
  • Q2: exibir apenas as linhas que começam com * Observe que há poucos espaços antes * ocorre. Isso significa que * não é o primeiro caractere na linha.

Como posso fazer isso?

    
por Radek 20.02.2012 / 05:24

2 respostas

10

Você pode expressar essas condições usando expressões regulares e usar grep para filtrar os resultados com base nesses termos.

O primeiro é ^? . O quilate é um caractere especial que representa o início de uma linha; para que a expressão corresponda ao início da linha imediatamente seguida por ? .

O segundo é ^ *\* . O * é um caractere especial que qualifica o caractere precedente - significa que o caractere precedente pode aparecer zero ou mais vezes. Como * é um caractere especial, o que você está procurando precisa ser evitado, portanto, \* . Assim, essa expressão corresponderá ao início de uma linha seguida por zero ou mais espaços, seguidos por um asterisco.

Para sua primeira condição, use a opção -v para grep para negar os resultados.

Então, finalmente,

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

ou

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

Expressões regulares são muito poderosas, então muitas ferramentas Unix podem usá-las. Eles valem muito a pena aprender. Existe um ótimo tutorial em regular-expressions.info .

    
por 20.02.2012 / 05:59
1

Q1: Uma maneira simples é a seguinte

svn st --show-updates -q

st é a abreviação para status e -q para quiet: isso excluirá arquivos que ainda não foram adicionados ao repositório.

Q2: se você não nomeou seus arquivos com um *, você também pode fazer isso:

svn status --show_updates|grep -v \*
    
por 09.06.2012 / 00:57