Então, tenho um aquivo com centenas de linhas, mas gostaria de jogar em outro arquivo
apenas as linhas que seguissem um determinado padrão.
Gostaria de salvar apenas as strings que começassem com uma letra A-Za-z na primeira posição,
um número na segunda posição 0-9, outra letra A-Za-z e outro número 0-9.
Detectado esse padrão salvar a linha em outro arquivo.
Exemplo do arquivo.
joão
maria
a1s2antonio
A1s2Marcia
laranja
p4k7silvio
1casa2
M7j3Pedro
A saída seria:
a1s2antonio
A1s2Marcia
p4k7silvio
M7j3Pedro
Quem puder me mostrar o caminho, lembrando que sou iniciante em shell script, e estou
aprendendo ainda repetições e as coisas mais básicas, essa de manipular strings de forma avançada
ainda estou perdido.
Bom é a cara de pokerface qdo a solução é tão simples pra um problema aparentemente chato. putz...
Grande AprendiNoLinux, sempre salvando a pátria, e sim, entendi o comando...
com aqueles links que vc me passou no outro post já ajudou muito. e cada exemplo vou melhorando mais.
todo dia aprendo uma coisa nova, vou fazendo coisas..
e sem ajuda seria bem mais complicado....
valeu d+ cara..
[4] Enviado em 24/04/2012 - 20:28h Re: Selecionando string por padrão. [RESOLVIDO]
Bom é a cara de pokerface qdo a solução é tão simples pra um problema aparentemente chato. putz...
Grande AprendiNoLinux, sempre salvando a pátria, e sim, entendi o comando...
com aqueles links que vc me passou no outro post já ajudou muito. e cada exemplo vou melhorando mais.
todo dia aprendo uma coisa nova, vou fazendo coisas..
e sem ajuda seria bem mais complicado....
valeu d+ cara..
kkkk
Aqui no VOL quando estava iniciando li um artigo que foi finalizado com a seguinte frase:
"Nunca desencorage ninguém que continuamente faz progresso, não importa quão devagar" Platão
Guardei esta mensagem com carinho porque me lembro bem como fui recebido quando não sabia nem como instalar o linux na minha máquina. Não que tenha evoluído muito, rsrs. Ainda estou apanhando para atualizar entre versões diferentes.
O importante é que o conhecimento só tem valor se compartilhado. Aprendi esta lição aqui no VOL e só estou retribuindo o que recebi quando aqui cheguei a mais ou menos 1 ano e pouco. ;)
Se não tem mais dúvidas, pode fechar o tópico por favor ?
Ae AprendiNoLinux, na verdade tenho outra dúvida sim.
depois da sua resposta já consegui fazer muita coisa no arquivo.
agora me falta limpar uns lixos, aqueles caracteres que ficam sem
ser reconhecido pelo editor.
preciso apagar todas as linhas que NÃO contenha os caracteres padrão (digamos "digitáveis do teclado)
depois da sua resposta eu tentei estabelecer os intervalos, funcionou muito bem
enquanto eu estava preso apenas a letras e numeros.
um [A-Za-z0-9] resolve meu problema em partes, mas eu não sei o "Range" para os
outros caracteres "digitáveis" de modo q elimine os lixos como no exemplo acima.
se puder dar uma força ai com mais essa, fico eternamente grato.
O site aqui editou o caractere.
na verdade onde tem �
é uma "interrogação dentro de uma caixinha" no editor aqui.
ou seja, um caractere que o editor nao conseguiu identificar.
não sei se consegui explicar. mas tudo bem...
A resposta para minha ultima pergunta está na página 12 desse pdf.
ou seja, é so especificar o intervalo dos caracteres de acordo com a tabela
ASCII.
então olhando ali todos os "digitáveis" que me são conveniente, o intervalo seria do ! até o ~
só que ao usá-lo no egrep ele me retorna NADA.
$cat arquivo.txt | egrep [!-~]
de acordo com o texto isso deveria me mostrar todas as linhas que contém
caracteres nesse intervalo de acordo com a tabela ASCII.
mas não está dando certo,
tem alguma idéia do pq?
Valeu!!
[8] Enviado em 25/04/2012 - 10:05h Re: Selecionando string por padrão. [RESOLVIDO]
Ae AprendiNoLinux, na verdade tenho outra dúvida sim.
depois da sua resposta já consegui fazer muita coisa no arquivo.
agora me falta limpar uns lixos, aqueles caracteres que ficam sem
ser reconhecido pelo editor.
preciso apagar todas as linhas que NÃO contenha os caracteres padrão (digamos "digitáveis do teclado)
depois da sua resposta eu tentei estabelecer os intervalos, funcionou muito bem
enquanto eu estava preso apenas a letras e numeros.
um [A-Za-z0-9] resolve meu problema em partes, mas eu não sei o "Range" para os
outros caracteres "digitáveis" de modo q elimine os lixos como no exemplo acima.
se puder dar uma força ai com mais essa, fico eternamente grato.
Valeu.
Quando fiz o quote deu para ver os reais valores dos caracteres.
Já que você não sabe o local em que irão ocorrer, vamos mudar a abordagem do problema.
Em vez de tentar descobrir quem está errado, vamos dizer quem está certo e inverter a lógica.
Então o filtro será:
[:alnum:] = Letras e dígitos. ou [:graph:] Caracteres imprimíveis. o problema é que não inclui espaços.
Já o [:print:] inclui espaços.
Veja qual atende melhor o seu padrão de filtro. Mesmo que não faça ainda o trabalho completo em um comando, você sempre poderá continuar o filtro na mesma linha igual foi feito no outro dia ok ?
Na dúvida, mande aí.
[9] Enviado em 25/04/2012 - 10:06h Re: Selecionando string por padrão. [RESOLVIDO]
A resposta para minha ultima pergunta está na página 12 desse pdf.
ou seja, é so especificar o intervalo dos caracteres de acordo com a tabela
ASCII.
então olhando ali todos os "digitáveis" que me são conveniente, o intervalo seria do ! até o ~
só que ao usá-lo no egrep ele me retorna NADA.
$cat arquivo.txt | egrep [!-~]
de acordo com o texto isso deveria me mostrar todas as linhas que contém
caracteres nesse intervalo de acordo com a tabela ASCII.
mas não está dando certo,
tem alguma idéia do pq?
Valeu!!
Sim. Você pensou certinho rsrs. Vou tentar...
[10] Enviado em 25/04/2012 - 10:23h Re: Selecionando string por padrão. [RESOLVIDO]
Ou deve sobrar só estes ? #Opção2
joao1234
zxcvb12345
Se for só este do final tá fácil.
egrep -v '[[:punct:]]'
Onde [:punct:] = caracteres de pontuação. Mas ele é muito restritivo e pode remover quem você não deseja. O -v mostra só quem não tem pontuação. Mas se o correto for a #opação1, voltamos ao alnum, alpha ou cntrl.
Pra ficar mais fácil o que eu quero:
olhando aquela tabela ASCII do link que coloquei, quero só os caracteres
do ! até o ~ que são respectivamente os numeros de 33 a 126 da tabela.
qualquer caractere fora desse range, deverá ser excluída a linha toda.
é isso ai.
[12] Enviado em 25/04/2012 - 14:23h Re: Selecionando string por padrão. [RESOLVIDO]
Pra ficar mais fácil o que eu quero:
olhando aquela tabela ASCII do link que coloquei, quero só os caracteres
do ! até o ~ que são respectivamente os numeros de 33 a 126 da tabela.
qualquer caractere fora desse range, deverá ser excluída a linha toda.