Je cherche à travers une grande base de code, et les espaces blancs et la tabulation de premier plan semblent être assez ennuyeux. Y a-t-il moyen de s'en débarrasser?
grep -R "something" ./
Par exemple, au lieu de:
foo/bar.cpp: qwertyuiosomethingoi
foo/bar/baz.h: 43rfsgsomethingdrfg
bar/bar.cpp: 1234edwssomethingczd
Je veux obtenir quelque chose comme:
foo/bar.cpp: qwertyuiosomethingoi
foo/bar/baz.h: 43rfsgdsomethingrfg
bar/bar.cpp: 1234edwssomethingczd
Ou mieux:
foo/bar.cpp: qwertyuisomethingooi
foo/bar/baz.h: 43rfsgdrsomethingfg
bar/bar.cpp: 1234edwssomethingczd
command-line
text-processing
grep
sed
Andrew
la source
la source
Réponses:
Créer des fichiers de test
produire des couleurs glorieuses :)
sortie (exécutez-le pour obtenir la couleur).
Testé
gnome-terminal
,konsole
,terminator
,xterm
la source
\t
personnages\t
? ... Il n'utilise pas\t
pour un séparateur, il utilise $ '\ x01' (hex 01) ... ou voulez-vous dire autre chose?\t
ainsi que des espaces blancs de premier plan\s
[[:space:]]
si vous souhaitez uniquement considérer TAB et SPACE, et non tous les espaces, utilisez-le à la place:[ \t]
Vous pouvez simplement les éliminer en utilisant
sed
Cela supprimera les principaux espaces blancs de la sortie
la source
En supposant que vous recherchez un motif
re
(une expression régulière de base) dans un fichier et que vous souhaitez supprimer les espaces de tête de toutes les lignes correspondantes:(en fait, cela supprime d'abord tous les espaces blancs, puis recherche le motif, mais le résultat est le même)
Pour post-traiter le
grep
sortie à la place (comme dans votre question modifiée):Le motif
[[:blank:]]*
correspond à zéro ou plusieurs espaces ou tabulations.la source
--color=always
cette expression régulière ne fonctionne pas: /fichier sed -n '/ pattern / p' | sed -r "s / \ s + // g"
la source