Comment puis-je supprimer toutes les lignes qui ne commencent pas avec certains caractères?
J'ai besoin de comprendre une expression régulière pour supprimer toutes les lignes qui ne commencent pas par "+" ou "-".
Je veux imprimer une copie papier d'un grand fichier diff, mais il montre 5 lignes avant et après la diff.
- Pourquoi ne pouvez-vous pas juste régénérer le diff et le dire à réduire le nombre de lignes de contexte?
- Pour ce que je viens de suggérer, la commande est
diff -c 0 -u 0
Vous devez vous connecter pour publier un commentaire.
Dans VIM:
:g!/^[+-]/d
Ici est la traduction en anglais:
g
lobally faire quelque chose pour toutes les lignes qui ne sont PAS!
correspondent à l'expression régulière: début de ligne^
suivi par+
ou-
, et que quelque chose à faire est ded
elete ces lignes.sed -e 'g!/^[+-]/d'
).sed-e '/^[^+-]/d'
diff -u <some args here> | grep '^[+-]'
Ou vous pouvez tout simplement pas produire les lignes:
diff --unified=0 <some args>
cat
:sed
accepte les noms de fichiers comme argumentsAu lieu de supprimer tout ce qui ne vous correspondent pas afficher uniquement les lignes qui correspondent. 🙂
grep ^[^+-]
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.
t-il inline sur le fichier courant, et peut être beaucoup plus rapide que
:v
pour les gros fichiers.Testé sur Vim 7.4, Ubuntu 14.04, 1M de la ligne de fichier journal.
Lignes qui ne contiennent pas de mot: https://superuser.com/questions/265085/vim-delete-all-lines-that-do-not-contain-a-certain-word/1187212#1187212