Ich greife durch eine große Codebasis und führende Leerzeichen und Tabellierungen scheinen ziemlich nervig zu sein. Gibt es eine Möglichkeit, es loszuwerden?
grep -R "something" ./
ZB anstelle von:
foo/bar.cpp: qwertyuiosomethingoi
foo/bar/baz.h: 43rfsgsomethingdrfg
bar/bar.cpp: 1234edwssomethingczd
Ich möchte etwas bekommen wie:
foo/bar.cpp: qwertyuiosomethingoi
foo/bar/baz.h: 43rfsgdsomethingrfg
bar/bar.cpp: 1234edwssomethingczd
Oder besser:
foo/bar.cpp: qwertyuisomethingooi
foo/bar/baz.h: 43rfsgdrsomethingfg
bar/bar.cpp: 1234edwssomethingczd
command-line
text-processing
grep
sed
Andrew
quelle
quelle
Antworten:
Erstellen Sie Testdateien
produzieren volle herrliche Farbe :)
Ausgabe (führen Sie es aus, um die Farbe zu erhalten).
Geprüft
gnome-terminal
,konsole
,terminator
,xterm
quelle
\t
Zeichen zu vergleichen\t
? ... es wird nicht\t
für einen Trenner verwendet, es wird $ '\ x01' (hex 01) verwendet ... oder meinst du etwas anderes?\t
als auch führende Leerzeichen geben\s
[[:space:]]
... Wenn Sie nur TAB und SPACE und nicht alle Leerzeichen berücksichtigen möchten , verwenden Sie stattdessen[ \t]
Sie können sie einfach mit beseitigen
sed
Dadurch werden die führenden Leerzeichen aus der Ausgabe entfernt
quelle
Angenommen, Sie suchen nach einem Muster
re
(einem einfachen regulären Ausdruck) in einer Datei und möchten führende Leerzeichen aus allen übereinstimmenden Zeilen entfernen:(Tatsächlich werden zuerst alle führenden Leerzeichen entfernt und dann das Muster gesucht, aber das Ergebnis ist dasselbe.)
So verarbeiten Sie die
grep
Ausgabe stattdessen nach (wie in Ihrer bearbeiteten Frage):Das Muster
[[:blank:]]*
entspricht keinem oder mehreren Leerzeichen oder Tabulatoren.quelle
--color=always
diesem Regexp funktioniert nicht: /sed -n '/ pattern / p' Datei | sed -r "s / \ s + // g"
quelle