Skip to content

Instantly share code, notes, and snippets.

@tapajos
Created February 9, 2012 23:01
Show Gist options
  • Select an option

  • Save tapajos/1784083 to your computer and use it in GitHub Desktop.

Select an option

Save tapajos/1784083 to your computer and use it in GitHub Desktop.
Remove whitespaces e linhas em branco duplicadas
#!/usr/bin/env bash
for fname in $(find . -name "*.rb" -print)
do
cat -s ${fname} | sed 's/[\t ]+$//g' > ${fname}.new &&
mv ${fname}.new ${fname}
done
@taq
Copy link
Copy Markdown

taq commented Feb 10, 2012

Usa o sed com a edição in-place:

!/bin/bash

find . -iname '*.rb' -print -exec sed -ie 's/[\t ]+$//g' {} ; 2>/dev/null

@tapajos
Copy link
Copy Markdown
Author

tapajos commented Feb 10, 2012 via email

@taq
Copy link
Copy Markdown

taq commented Feb 10, 2012

Putz, tá comendo uma barra ali, o certo é ficar (deixa tentar de novo):

find . -iname '*.rb' -print -exec sed -ie 's/[\t ]+$//g' {} ; 2>/dev/null

@tapajos
Copy link
Copy Markdown
Author

tapajos commented Feb 10, 2012

TaQ, usa a formatação de código que o gist oferece.

@taq
Copy link
Copy Markdown

taq commented Feb 10, 2012

Que coisa, a formatação aqui tá comendo aquela barra antes do $, que diacho! Tem que "escapar" ela pra por no comentário, e parece que no código também. :-p

@taq
Copy link
Copy Markdown

taq commented Feb 10, 2012

Mas olha lá no seu código, ela foi comida também. :-( Se deixar sem ela, ele não funfa corretamente pra pegar os espaços do final da linha.

@tapajos
Copy link
Copy Markdown
Author

tapajos commented Feb 10, 2012

Nem tinha percebido.

@tapajos
Copy link
Copy Markdown
Author

tapajos commented Feb 10, 2012

Na verdade acho que não entendi de que barra você está falando...

@taq
Copy link
Copy Markdown

taq commented Feb 10, 2012

É aquela da repetição no comando do sed, “barra mais cifrão“.
Eu até tentei sem a formatação pra ver se não era engolida. :-p

@tapajos
Copy link
Copy Markdown
Author

tapajos commented Feb 16, 2012

find . -iname '*.rb' -print -exec perl -pi -e 's/[\t ]+$//g' {} \;

@taq
Copy link
Copy Markdown

taq commented Feb 16, 2012

Perl não vale, pô. :-)

@tapajos
Copy link
Copy Markdown
Author

tapajos commented Feb 16, 2012 via email

@taq
Copy link
Copy Markdown

taq commented Feb 17, 2012

Já que vale outra coisa senão o arroz-com-feijão do bash, faz em Ruby mesmo:

Dir.glob("*.rb") {|file| co = File.read(file).gsub(/[\t ]+$/,""); File.open(file,"wb") {|nf| nf<<co}}

;-)

@tapajos
Copy link
Copy Markdown
Author

tapajos commented Feb 17, 2012 via email

@tapajos
Copy link
Copy Markdown
Author

tapajos commented Feb 17, 2012

Tag,

Então outro desafio. Via find pegar apenas arquivos não ocultos e que não sejam binários.

Exemplo:

pegar arquivos txt, rb, erb, js mas não pegar jpg etc.

@tapajos
Copy link
Copy Markdown
Author

tapajos commented Feb 17, 2012

A versão atual está assim:

find * -type f \( -name '*.rb' -o -name '*.js' -o -name "*.erb" -o -name "*.haml" \) -print -exec perl -pi -e 's/[\t ]+$//g' {} \;

@taq
Copy link
Copy Markdown

taq commented Feb 17, 2012

Eu fiz assim:

find -type f ! -iname ".*" 2> /dev/null -exec file -i {} \; | grep -v "binary$" | cut -f1 -d':'

Parece que funfou, se não funfou, amanhã eu vejo, tô podre de sono desde manhã e terminei o trampo agora! :-)

@taq
Copy link
Copy Markdown

taq commented Feb 17, 2012

Cumé que é a do teu bloquinho ali? Syntax highlight começando com as três ` tá dando esse trem doido ali de cima. Preguiça de ver. :-)

@tapajos
Copy link
Copy Markdown
Author

tapajos commented Feb 17, 2012

Você não conhecia essa?

@taq
Copy link
Copy Markdown

taq commented Feb 17, 2012

Vixi, eu conto nos dedos da mão quantas vezes colei código por aqui. Eu sei, eu sei, eu devia aproveitar mais blá blá blá etc e tal, mas não rolou. :-) E nem havia visto a formatação do treco ... mas diz aí, como que teu bloquinho ficou mais bonitinho que o meu usando as 3 ` ? :-)

@tapajos
Copy link
Copy Markdown
Author

tapajos commented Feb 17, 2012

Olha se o seu bloco ficou melhor agora!! :-)

@taq
Copy link
Copy Markdown

taq commented Feb 17, 2012

Aeeee agora ficou mais bunitinho, só por o shell lá? No de Ruby ficou aparecendo "ruby" embaixo, achei feio ...
Mas e aí, o script funfou?

@tapajos
Copy link
Copy Markdown
Author

tapajos commented Feb 17, 2012 via email

@taq
Copy link
Copy Markdown

taq commented Feb 17, 2012

@!#$@$@ ... detalhes que a gente não vê quando está com pressa. Agora ficou bonito, thanks. :-)
Nota mental: "não esquecer a linha em branco nos blocos do Gist ... e o menino sabe demais!" (essa última só quem é fã de Simpsons vai entender ;-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment