Site sobre software livre, cultura, arte, gimp, inkscape, wallpapers, vim, firefox, python, e-books, algoritmos, openoffice, ubuntu, debian, gnome, inkscape, bash, shell script, música, arte, mpb, dicas em geral, Geopolítica, politica, brasil, blogsfera, ativismo, rock, english
Mostrando postagens com marcador regex. Mostrar todas as postagens
Mostrando postagens com marcador regex. Mostrar todas as postagens
Eu amo regex
Meu amigo Renato me trouxe uma perguntinha intrigante ontem à noite. Como pegar:
protocolo, servidor e linguagem de três urls assim:
http://www.uol.com.br/index.php
http://www.oi.com.br/recados.asp
https://google/services.pl
trata-las e gerar esta saída:
protocolo: http server: uol linguagem: php
protocolo: http server: oi linguagem: asp
protocolo: https server: google linguagem: pl
Pra finalizar um site pra você testar suas expressões regulares:
http://gskinner.com/RegExr/
protocolo, servidor e linguagem de três urls assim:
http://www.uol.com.br/index.php
http://www.oi.com.br/recados.asp
https://google/services.pl
trata-las e gerar esta saída:
protocolo: http server: uol linguagem: php
protocolo: http server: oi linguagem: asp
protocolo: https server: google linguagem: pl
Pra finalizar um site pra você testar suas expressões regulares:
http://gskinner.com/RegExr/
Adicionando extensão a um grupo de arquivos
Outro dia postei uma solução (com o find) para adicionar extensão a um grupo de arquivos simplesmente por não lembrar que poderia fazer assim:
O cifrão no comando acima é uma expressão regular que significa final :)
Só para constar segue um meio de criar 100 arquivos (sem extensão)
rename 's/$/.txt/g' *
O cifrão no comando acima é uma expressão regular que significa final :)
Só para constar segue um meio de criar 100 arquivos (sem extensão)
for ((i=1;i<=100;i++)){
> arquivo$i
}
Find + Xargs de novo!
adicionando extensão a arquivos
Eu tinha um monte de arquivos sem extensão e queria colocar
no final txt, segue a solução.
A vantagem desta abordagem é que o find entrega uma lista pronta
para o xargs, assim um arquivo já renomeado não pode sofrer novamente
a alteração em questão. Outra vantagem é que fica tudo em uma mísera linha.
Solução usando o rename
O cifrão é uma expressão regular que significa final do padrão buscado!
Eu tinha um monte de arquivos sem extensão e queria colocar
no final txt, segue a solução.
find ./ -maxdepth 1 -type f -print0 | xargs -0 -i mv ./{} ./{}.txt
A vantagem desta abordagem é que o find entrega uma lista pronta
para o xargs, assim um arquivo já renomeado não pode sofrer novamente
a alteração em questão. Outra vantagem é que fica tudo em uma mísera linha.
Solução usando o rename
rename 's/$/.txt/g' *
O cifrão é uma expressão regular que significa final do padrão buscado!
Ferramenta para busca e substituição - regexxer
http://regexxer.sourceforge.net/
Uma ferramenta ao meu ver muito útil veja uma imagem para entender melhor
Uma ferramenta ao meu ver muito útil veja uma imagem para entender melhor
Como localizar 'arquivos' que não obedeçam a um padrão?
Essa pergunta surge no seguinte contexto:
Você baixou por exemplo a biblioteca de imagens openclipart
que tem uma versão 'full', nesta versão além dos arquivos svg
vem também arquivos 'png', 'txt', 'pdf' entre outros, eu queria
fazer um cd para o Natal Livre 2008 e para diminuir o tamamnho
precisava deixar apenas os arquivso com extensão 'svg', fiz assim:
O find está buscando na pasta clipart por arquivos
'-type f' que obedeçam à expressão regular '.*\.[^svg]$'
O significado da expressão regular por sua vez é:
.* ......... qualquer caractere em qualquer quantidade
\. ......... seguido de um ponto
[^svg] ..... não seguido de svg (negação)
$ ........... seguido de final de linha
O xargs pega blocos de tamanho aceitáveis para a memória
evitando estouro de pilha e entrega para o comando de remoção
'rm'
A biblioteca openclipart tem muitas subpastas e agora eu
queria saber a quantidade de arquivos únicos
Você baixou por exemplo a biblioteca de imagens openclipart
que tem uma versão 'full', nesta versão além dos arquivos svg
vem também arquivos 'png', 'txt', 'pdf' entre outros, eu queria
fazer um cd para o Natal Livre 2008 e para diminuir o tamamnho
precisava deixar apenas os arquivso com extensão 'svg', fiz assim:
find ./clipart -type f -iregex '.*\.[^svg]$' | xargs -rm f O find está buscando na pasta clipart por arquivos
'-type f' que obedeçam à expressão regular '.*\.[^svg]$'
O significado da expressão regular por sua vez é:
.* ......... qualquer caractere em qualquer quantidade
\. ......... seguido de um ponto
[^svg] ..... não seguido de svg (negação)
$ ........... seguido de final de linha
O xargs pega blocos de tamanho aceitáveis para a memória
evitando estouro de pilha e entrega para o comando de remoção
'rm'
A biblioteca openclipart tem muitas subpastas e agora eu
queria saber a quantidade de arquivos únicos
find ./clipart/ -type f -iregex ".*\.svg$" | xargs -i basename ./{} | sort | uniq | wc -l
Assuntos Geek's
Estou me propondo a compilar no LaTeX o livro "Como pensar como um cientista da computação" traduzido pelo pessoal da fatec. O trabalho de tradução ficou ótimo, mas o layout dos documentos formatados via LaTeX é um caso à parte.
Os arquivos fonte encontram-se em formato rest (rst) e para trocar
Começe de um algorítimo mais simples e vá incrementando até chegar ao ponto desejado, no vim fiz primeiro uma busca.
Esse grpo ".*" (qualquer coisa agora vai para dentro de parênteses)
Para o gran finale (referenciar numa substituição a última busca "//")
Agora vou dar a ordem para executar em todos os arquivos
Para as imagens faça:
Os arquivos fonte encontram-se em formato rest (rst) e para trocar
=================================Comecei usando uma abordagem descrita no próprio livro:
Capítulo 1: O caminho do programa
=================================
por
\chapter{O caminho do programa}
\label{cha:O caminho do programa}
Começe de um algorítimo mais simples e vá incrementando até chegar ao ponto desejado, no vim fiz primeiro uma busca.
/=\+\n\D\+\d:\s\+.*\n=\+
discecando /=\+ ......... uma igualdade ou mais
\n ............ seguido de uma quebra de linha
\D\+............ seguido de um "não dígito" ou mais
\d\+ ........... seguido de um dígito ou mias
: ............ seguido de dois pontos
\s\+ .......... seguido de um espaço ou mais
.* ............ seguido de qualquer coisa
\n ............ seguido de uma quebra de linha
=\+ ........... seguido de uma igualdade ou mais
Esse grpo ".*" (qualquer coisa agora vai para dentro de parênteses)
/=\+\n\D\+\d:\s\+\(.*\)\n=\+
Para o gran finale (referenciar numa substituição a última busca "//")
:%s//\\chapter{\1}\r\\label{\1}/g
Agora vou dar a ordem para executar em todos os arquivos
:bufdo :%s//\\chapter{\1}\r\\label{cha:\1}/g
Para as imagens faça:
:bufdo :%s//\\includegraphics[scale=0.7]{.img\/\1}/g
para salvar tudo:
:wall
Teste suas expressões regulares on-line
"Diversas vezes deparamo-nos com situações que são facilmente resolvidas com a utilização
de regex. E às vezes surgem dúvidas do tipo: "Será que essa regex vai pegar
o que eu quero?" ou "Por quê não funciona?".
de regex. E às vezes surgem dúvidas do tipo: "Será que essa regex vai pegar
o que eu quero?" ou "Por quê não funciona?".
Dica do site "Dicas-L", uma ferramenta on-line para testar expressões regulares,
acesse a ferramenta neste link. link da dica aqui.
Syntax para endereços ip
Que tal se ao digitar no vim um endereço ip ele
fizesse a validação pra você usando cores?
http://vim.wikia.com/wiki/Mathing_valid_IP_address
fizesse a validação pra você usando cores?
http://vim.wikia.com/wiki/Mathing_valid_IP_address
Vim Regex
Se você não usa o vim pule este post :)
Agora se conhece visite este site:
http://www.geocities.com/volontir/ ele contém muitas dicas de como usar expressões regulares no vim. De quebra estou mandando algumas dicas do vim para aguçar sua curiosidade.
=====================================
como deletar de uma marca até outra?
=====================================
:'a,'bd --> delete da marca 'a' até a marca 'b'
=====================================
como fazer uma busca e tornala maiúscula
=====================================
:%s/palavra/\U&/g
o operador '&' indica a palavra buscada
para tornar minúsculo use '\L' de Lowcase:
:%s/palavra/\L&/g
Agora se conhece visite este site:
http://www.geocities.com/volontir/ ele contém muitas dicas de como usar expressões regulares no vim. De quebra estou mandando algumas dicas do vim para aguçar sua curiosidade.
=====================================
como deletar de uma marca até outra?
=====================================
:'a,'bd --> delete da marca 'a' até a marca 'b'
=====================================
como fazer uma busca e tornala maiúscula
=====================================
:%s/palavra/\U&/g
o operador '&' indica a palavra buscada
para tornar minúsculo use '\L' de Lowcase:
:%s/palavra/\L&/g
Conhecendo as Expressões Regulares
Se você já ficou horas procurando um texto em seu computador deve ter pensado... ...Deve haver alguma ferramenta ou tecnologia que me permita fazer buscas por conteúdo de forma mais eficiente!
Pois é, existe: São as Expressões Regulares
No site: http://guia-er.sourceforge.net/ você encontra um excelente manual sobre Expressões Regulares.
Pois é, existe: São as Expressões Regulares
No site: http://guia-er.sourceforge.net/ você encontra um excelente manual sobre Expressões Regulares.
Assinar:
Postagens (Atom)
linux-cookbook
|
|
| Participe do grupo linux-cookbook |
| Visitar este grupo |