Contar APENAS palavras alfanuméricas em uma coluna específica de um arquivo

1

É essencialmente o que o título diz - eu recebo um arquivo de teste e sou capaz de contar as palavras em uma coluna específica de um arquivo. O problema é que existem algumas linhas que contêm apenas números.

Eu sei que wc dará a contagem de palavras de alguma coisa - mas se bem me lembro, não distingue entre números e palavras reais (então um arquivo com 0184674673 HELLO daria uma contagem de palavras de dois) - existe alguma forma não-complicada (curta de passar por cada linha da coluna, verificando se a palavra tem algum número e incrementar um contador se não) resolvendo isso com um comando ou não?

Se você quiser ver um trecho do arquivo que recebi aqui:

disobediently RESINY GRAPHICS lownesses prickers intractabiliti es 85790227 villainously MINIS blinkering applicants TORPIDITIES subtexts apportioned carded electrocardiograph SINTERED FOOTSORE ENTHRALMENTS Sherpa FLAN OVERRULES NEWSREADER 15318116 PUTRIDNESS EXECUTIONAL vanguard LUCENTLY CONGRUENTLY 14117187 pretending misshapes cowslip 18714723 JUDGES INTERNATIONALIZING DISCUSSES 85192973 quorate shirking SECURES scrofula exclude NUCLIDE shipwrecks prologuing indelicacy NUTRITIONS decompresses manlike aggregately NEGOTIANT chewy Egypt bloodsports STOREYS worthier BELLOWING HAEMATIN UNCONTROLLED SUFFERER CLOPPING DUALLY 5363130 DISCOMMODING ENTRANCED brilliantness changeableness driest uncouth abjectnesses grumpiness ache 94854804 JETSAMS barbarousness REPOSSESSIONS INCLINATION Jardine AUTHORISED parading ties Hillyer USHER COMPLIANCES disdainful 98908803 CANDIDACY Rostov titrates DICTIONARIES optimists luted WART RAPINE 94683675 cannibal hostilely KALI ADMIRATIONS 95714958 AMPUTATED 65196125 VIEWFINDER uprated narrowing disavowing ALPINES Stahl HEELLESS feminises LUCKINESSES patriarchate anticommunism

    
por Tai M. 12.04.2016 / 01:07

1 resposta

1

Se você não está restrito ao wc, você pode filtrar os números com uma ferramenta como sed e depois contar as palavras usando wc.

Dado seu texto (no testfile) vai dar:

$ sed -e s/[0-9]*//g testfile

disobediently RESINY GRAPHICS lownesses prickers intractabiliti es villainously MINIS blinkering applicants TORPIDITIES subtexts apportioned carded electrocardiograph SINTERED FOOTSORE ENTHRALMENTS Sherpa FLAN OVERRULES NEWSREADER PUTRIDNESS EXECUTIONAL vanguard LUCENTLY CONGRUENTLY pretending misshapes cowslip JUDGES INTERNATIONALIZING DISCUSSES quorate shirking SECURES scrofula exclude NUCLIDE shipwrecks prologuing indelicacy NUTRITIONS decompresses manlike aggregately NEGOTIANT chewy Egypt bloodsports STOREYS worthier BELLOWING HAEMATIN UNCONTROLLED SUFFERER CLOPPING DUALLY DISCOMMODING ENTRANCED brilliantness changeableness driest uncouth abjectnesses grumpiness ache JETSAMS barbarousness REPOSSESSIONS INCLINATION Jardine AUTHORISED parading ties Hillyer USHER COMPLIANCES disdainful CANDIDACY Rostov titrates DICTIONARIES optimists luted WART RAPINE cannibal hostilely KALI ADMIRATIONS AMPUTATED VIEWFINDER uprated narrowing disavowing ALPINES Stahl HEELLESS feminises LUCKINESSES patriarchate anticommunism

O padrão regex que usei tem a desvantagem de os espaços em branco depois que os números não são removidos, mas isso não parece importar em contar com wc.

Você pode contar as palavras diretamente com o wc após a filtragem com o tubo.

$ sed -e s/[0-9]*//g testfile | wc
  2     104    1035
    
por 12.04.2016 / 01:12

Tags