2009-11-12 5 views
22

J'ai besoin de trouver une expression régulière pour supprimer toutes les lignes qui ne commencent pas par "+" ou "-".Comment puis-je supprimer toutes les lignes qui ne commencent pas par certains caractères?

Je veux imprimer une copie papier d'un grand fichier diff, mais il montre 5 lignes ou plus avant et après le diff actuel.

+1

Pourquoi ne pas vous redonneront juste le diff et lui dire de réduire le nombre de lignes de contexte? –

+1

Pour ce que je viens de suggérer, la commande est 'diff -c 0 -u 0' –

Répondre

46

In VIM:

:g!/^[+-]/d

Voici la traduction anglaise:

g faire lobally quelque chose à toutes les lignes qui ne sont pas ! correspondent à l'expression régulière: début de la ligne ^ suivie soit + ou -, et que quelque chose à faire est de d elete ces lignes.

+0

Super, merci! C'est une bonne solution. – mager

+4

si vous voulez enregistrer une touche: ': v' est synonyme de ': g!' :) –

+0

Cela économise deux frappes! Maj, 1. Neat. – Marcin

0

diff -u <some args here> | grep '^[+-]'

Ou vous pouvez simplement pas produire les lignes supplémentaires du tout:

diff --unified=0 <some args>

0
cat your_diff_file | sed '/^[+-]/!D' 
+0

utilisation inutile de' cat': 'sed' accepte les noms de fichiers comme arguments –

+0

D'accord pour ce cas particulier. J'utilise généralement cat lors de l'utilisation d'une longue chaîne de commandes sed pour filtrer les données par incrément. Si j'ai un fichier de données trop grand pour commencer, je remplace cat avec la tête -100 et la partie restante reste la même. –

0
egrep "^[+-]" difffile >outputfile 

Au lieu de supprimer tout ce qui ne correspond pas, vous n'affichez que les lignes qui correspondent. :)

+1

Vous avez certainement besoin d'un autre signe d'insertion et vous n'avez pas besoin de "e" ou de guillemets. Cela fonctionne pour moi: 'grep^[^ + -]' –

0

Si vous avez besoin de faire quelque chose de plus complexe en termes d'expressions régulières, vous devez utiliser ce site: http://txt2re.com/

il fournit également des exemples de code pour de nombreuses langues différentes.

+0

Merci! C'est génial!! – mager