achar palavras/nomes de variaveis > 30 bytes dentro de arquivos textos [RESOLVIDO]

1. achar palavras/nomes de variaveis > 30 bytes dentro de arquivos textos [RESOLVIDO]

nilton terra
nferntt

(usa Red Hat)

Enviado em 17/09/2015 - 15:18h

Boa tarde,

Tenho um texto em linux e algumas palavras/variaveis foram escritas com mais de 30 caracteres. Gostaria de achá-las no texto.

Exemplo

Arq1.txt
param(t_parametro_de_entrada_num_unico_b,t_parametro_de_entrada_num_unico_c);
final do texto

as palavras/variaveis abaixo possuem 34 caracteres. Quero localizar estes e os que são > 30 caracteres.
t_parametro_de_entrada_num_unico_b
t_parametro_de_entrada_num_unico_c

Obrigado,

nilton



  


2. MELHOR RESPOSTA

Fernando
phoemur

(usa Debian)

Enviado em 17/09/2015 - 23:45h

nferntt escreveu:


Obrigado phoemur

O código exemplo funcionou bonito mas quando apliquei ao meu texto não consegui representar com exatidão.

Segue um pedaço de exemplo:

-- =================================================
-- REPLICAT parameters RPABC01.prm
-- =================================================
REPLICAT RPABC01
-- =================================================
-- Macros
-- =================================================
Include ./dirmac/database.mac
Include ./dirmac/environment.mac
Include ./dirmac/report.mac
Include ./dirmac/utils.mac
Include ./dirmac/topology.mac
-- =================================================
#setEnvironment() 1234567890123456789012345678901234
#loginDatabase()
#configureReplicatReporting()
#allowNoOpUpdates()
-- =================================================
RepError(Default, Exception)
RepError(Default2, Abend)
-- =================================================
DynamicResolution
-- #applyDefaultTuning()
-- =================================================
-- Discard File
-- =================================================
DiscardFile ./dirdsc/ABC/ext01/RPABC01.dsc #applyDefaultDiscardPolicy()
DiscardRollover at 00:15


não execução com w minuscula. Troquei para W (maiuscula). Segue o resultado:
['-- =================================================\n-- ', '\n-- =================================================\n', '\n-- =================================================\n-- ', ' \n-- =================================================\n', '\n-- =================================================\n#', '()\n-- =================================================\n', ')\n-- =================================================\n', '()\n-- =================================================\n-- ', '\n-- =================================================\n', '\n-- =================================================\n-- ', ');\n-- =================================================\n-- ', '\n-- =================================================\n', ');\n------------------------------------\n-- ', '\n------------------------------------\n', '));\n-- =================================================\n-- ', '\n-- =================================================\n']

Note o valor 1234567890123456789012345678901234 não aparece no resultado.

Obrigado.


o w tem que ser minusculo mesmo:

\w
When the LOCALE and UNICODE flags are not specified, matches any alphanumeric character and the underscore; this is equivalent to the set [a-zA-Z0-9_]. With LOCALE, it will match the set [0-9_] plus whatever characters are defined as alphanumeric for the current locale. If UNICODE is set, this will match the characters [0-9_] plus whatever is classified as alphanumeric in the Unicode character properties database.
\W
When the LOCALE and UNICODE flags are not specified, matches any non-alphanumeric character; this is equivalent to the set [^a-zA-Z0-9_]. With LOCALE, it will match any character not in the set [0-9_], and not defined as alphanumeric for the current locale. If UNICODE is set, this will match anything other than [0-9_] plus characters classified as not alphanumeric in the Unicode character properties database.


tenta assim:

phoemur ~/teste $ cat Arq1.txt
-- =================================================
-- REPLICAT parameters RPABC01.prm
-- =================================================
REPLICAT RPABC01
-- =================================================
-- Macros
-- =================================================
Include ./dirmac/database.mac
Include ./dirmac/environment.mac
Include ./dirmac/report.mac
Include ./dirmac/utils.mac
Include ./dirmac/topology.mac
-- =================================================
#setEnvironment() 1234567890123456789012345678901234
#loginDatabase()
#configureReplicatReporting()
#allowNoOpUpdates()
-- =================================================
RepError(Default, Exception)
RepError(Default2, Abend)
-- =================================================
DynamicResolution
-- #applyDefaultTuning()
-- =================================================
-- Discard File
-- =================================================
DiscardFile ./dirdsc/ABC/ext01/RPABC01.dsc #applyDefaultDiscardPolicy()
DiscardRollover at 00:15

phoemur ~/teste $ cat Arq1.txt | python -c 'import re, sys; print([ i for i in re.findall("[a-zA-Z0-9_]+", sys.stdin.read()) if len(i) > 30])'
['1234567890123456789012345678901234']



3. Re: achar palavras/nomes de variaveis > 30 bytes dentro de arquivos textos

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 17/09/2015 - 17:08h

olá,

Não ficou um comando bonito, mas funciona..rs

sed -rn '/.{30}+,*/p' | sed 's/\,/\n/g; s/.*[(]//g;s/)//g' arq1.txt


o comando acima vai procurar em todo o texto (caractere à caractere) por setençãs iguais ou maiores que 30 carateres. Tive que da uma "ajeitada" no cod, pois setenças separadas por virgula e sem espaço, é considerada um setença só, dai começou a fica feio o comando.. ams aqui rolou tranquilo.

Espero que ajude.

abs
---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---


4. Re: achar palavras/nomes de variaveis > 30 bytes dentro de arquivos textos [RESOLVIDO]

nilton terra
nferntt

(usa Red Hat)

Enviado em 17/09/2015 - 18:07h


Alan muito obrigado.

Funcionou de acordo com o solicitado.

Obrigado.


5. Re: achar palavras/nomes de variaveis > 30 bytes dentro de arquivos textos [RESOLVIDO]

Fernando
phoemur

(usa Debian)

Enviado em 17/09/2015 - 18:22h

Outra alternativa


python -c 'import re; print([ i for i in re.findall("\w+", open("Arq1.txt").read()) if len(i) > 30])'


ou


cat Arq1.txt | python -c 'import re, sys; print([ i for i in re.findall("\w+", sys.stdin.read()) if len(i) > 30])'





6. Re: achar palavras/nomes de variaveis > 30 bytes dentro de arquivos textos [RESOLVIDO]

nilton terra
nferntt

(usa Red Hat)

Enviado em 17/09/2015 - 18:52h


Obrigado phoemur

O código exemplo funcionou bonito mas quando apliquei ao meu texto não consegui representar com exatidão.

Segue um pedaço de exemplo:

-- =================================================
-- REPLICAT parameters RPABC01.prm
-- =================================================
REPLICAT RPABC01
-- =================================================
-- Macros
-- =================================================
Include ./dirmac/database.mac
Include ./dirmac/environment.mac
Include ./dirmac/report.mac
Include ./dirmac/utils.mac
Include ./dirmac/topology.mac
-- =================================================
#setEnvironment() 1234567890123456789012345678901234
#loginDatabase()
#configureReplicatReporting()
#allowNoOpUpdates()
-- =================================================
RepError(Default, Exception)
RepError(Default2, Abend)
-- =================================================
DynamicResolution
-- #applyDefaultTuning()
-- =================================================
-- Discard File
-- =================================================
DiscardFile ./dirdsc/ABC/ext01/RPABC01.dsc #applyDefaultDiscardPolicy()
DiscardRollover at 00:15


não execução com w minuscula. Troquei para W (maiuscula). Segue o resultado:
['-- =================================================\n-- ', '\n-- =================================================\n', '\n-- =================================================\n-- ', ' \n-- =================================================\n', '\n-- =================================================\n#', '()\n-- =================================================\n', ')\n-- =================================================\n', '()\n-- =================================================\n-- ', '\n-- =================================================\n', '\n-- =================================================\n-- ', ');\n-- =================================================\n-- ', '\n-- =================================================\n', ');\n------------------------------------\n-- ', '\n------------------------------------\n', '));\n-- =================================================\n-- ', '\n-- =================================================\n']

Note o valor 1234567890123456789012345678901234 não aparece no resultado.

Obrigado.


7. Re: achar palavras/nomes de variaveis > 30 bytes dentro de arquivos textos [RESOLVIDO]

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 17/09/2015 - 22:10h

nferntt escreveu:


Alan muito obrigado.

Funcionou de acordo com o solicitado.

Obrigado.


KKk. O nome é tonyhts.... não alan.. kkk

abs.

---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---


8. Re: achar palavras/nomes de variaveis > 30 bytes dentro de arquivos textos [RESOLVIDO]

nilton terra
nferntt

(usa Red Hat)

Enviado em 18/09/2015 - 11:02h


Bom dia phoemur.

Funcionou.

Muito Obrigado.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts