Przeglądam dużą bazę kodu, a wiodące białe znaki i tabulacja wydają się dość denerwujące. Czy jest jakiś sposób, aby się go pozbyć?
grep -R "something" ./
Np. Zamiast:
foo/bar.cpp: qwertyuiosomethingoi
foo/bar/baz.h: 43rfsgsomethingdrfg
bar/bar.cpp: 1234edwssomethingczd
Chcę uzyskać coś takiego:
foo/bar.cpp: qwertyuiosomethingoi
foo/bar/baz.h: 43rfsgdsomethingrfg
bar/bar.cpp: 1234edwssomethingczd
Albo lepiej:
foo/bar.cpp: qwertyuisomethingooi
foo/bar/baz.h: 43rfsgdrsomethingfg
bar/bar.cpp: 1234edwssomethingczd
command-line
text-processing
grep
sed
Andrzej
źródło
źródło
Odpowiedzi:
Utwórz pliki testowe
produkować pełny wspaniały kolor :)
wyjście (uruchom go, aby uzyskać kolor).
Testowane w
gnome-terminal
,konsole
,terminator
,xterm
źródło
\t
postacie\t
? ... Nie używa się go\t
jako separatora, używa $ '\ x01' (hex 01) ... czy masz na myśli coś innego?\t
a także wiodące białe znaki\s
[[:space:]]
... Jeśli chcesz[ \t]
Możesz je po prostu wyeliminować za pomocą
sed
Spowoduje to usunięcie wiodących białych znaków z wyniku
źródło
Zakładając, że szukasz wzoru
re
(podstawowe wyrażenie regularne) w jednym pliku i chcesz usunąć wiodące białe znaki ze wszystkich pasujących wierszy:(w rzeczywistości najpierw usuwa wszystkie wiodące białe znaki, a następnie szuka wzoru, ale wynik jest taki sam)
Aby
grep
zamiast tego przetworzyć dane wyjściowe (jak w edytowanym pytaniu):Wzór
[[:blank:]]*
pasuje do zera lub więcej spacji lub tabulatorów.źródło
--color=always
tym wyrażeniem regularnym nie działa: /plik sed -n '/ pattern / p' | sed -r "s / \ s + // g"
źródło