Como faço para grep sem liderar espaços em branco?

16

Estou passando por uma grande base de código, e os principais espaços em branco e a tabulação parecem ser bastante irritantes. Existe alguma maneira de se livrar dele?

grep -R "something" ./

Por exemplo, em vez de:

foo/bar.cpp:                       qwertyuiosomethingoi
foo/bar/baz.h:                          43rfsgsomethingdrfg
bar/bar.cpp:            1234edwssomethingczd

Eu quero algo como:

foo/bar.cpp: qwertyuiosomethingoi
foo/bar/baz.h: 43rfsgdsomethingrfg
bar/bar.cpp: 1234edwssomethingczd

Ou melhor:

foo/bar.cpp:   qwertyuisomethingooi
foo/bar/baz.h: 43rfsgdrsomethingfg
bar/bar.cpp:   1234edwssomethingczd
    
por Andrew 09.09.2011 / 22:48

3 respostas

4

Crie arquivos de teste

echo -e "\t   foo-somethingfoo" >something.foo
echo "    bar-bar-somethingbar" >something.bar_bar
echo "baz-baz-baz-somethingbaz" >something.baz_baz_baz
echo "  spaces    something  s" >something.spaces

produz cores gloriosas completas:)

grep --colour=always "something" something.* | 
 sed -re  's/^([^:]+):(\x1b\[m\x1b\[K)[[:space:]]*(.*)/\x01/' |
   column -s $'\x01' -t

saída (execute para obter a cor).

something.bar_bar      bar-bar-somethingbar
something.baz_baz_baz  baz-baz-baz-somethingbaz
something.foo          foo-somethingfoo
something.spaces       spaces    something  s

Testado em gnome-terminal , konsole , terminator , xterm

    
por 10.09.2011 / 00:52
6

Você pode eliminá-los usando sed

grep blah filename.foo | sed -e 's/^[ \t]*//'

Isso removerá os espaços em branco iniciais da saída

    
por 09.09.2011 / 23:02
5

Supondo que você esteja procurando o padrão re (uma expressão regular básica) em um arquivo e deseja retirar o espaço em branco inicial de todas as linhas correspondentes:

sed -n -e 's/^[ \t]*//' -e '/re/p' thefile.c

(na verdade, isso elimina todos os espaços em branco iniciais e depois procura o padrão, mas o resultado é o mesmo)

Para pós-processar a grep output (como na sua pergunta editada):

grep re * | sed 's/:[ \t]*/: /'
    
por 09.09.2011 / 23:07