Estou vasculhando uma grande base de código, e os principais espaços em branco e tabulação parecem bastante irritantes. Existe alguma maneira de se livrar disso?
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
command-line
text-processing
grep
sed
Andrew
fonte
fonte
Respostas:
Crie arquivos de teste
produzir cores gloriosas cheias :)
saída (execute para obter a cor).
Testado em
gnome-terminal
,konsole
,terminator
,xterm
fonte
\t
caracteres\t
? ... Não está usando\t
para um separador, está usando $ '\ x01' (hex 01) ... ou você quer dizer outra coisa?\t
, bem como os principais espaços em branco\s
[[:space:]]
... Se você quiser considerar apenas TAB e do espaço, e não todos os espaços em branco, use esta em vez disso:[ \t]
Você pode simplesmente eliminá-los usando
sed
Isso removerá os principais espaços em branco da saída
fonte
Supondo que você esteja procurando um padrão
re
(uma expressão regular básica) em um arquivo e deseje remover o espaço em branco à esquerda de todas as linhas correspondentes:(na verdade, isso remove primeiro todos os espaços em branco à esquerda e depois procura o padrão, mas o resultado é o mesmo)
Para pós-processar a
grep
saída (como na sua pergunta editada):O padrão
[[:blank:]]*
corresponde a zero ou mais espaços ou tabulações.fonte
--color=always
este regexp não funciona: /arquivo sed -n '/ pattern / p' | sed -r "s / \ s + // g"
fonte