Como verificar se a entrada contém todos os 26 caracteres

2

Eu tenho um arquivo de entrada que contém um caractere por linha Eu quero verificar se o arquivo tem exatamente todas as 26 letras. Eu achei que uniq -d pode ajudar a obter o repetido. Mas como descobrir o personagem desaparecido? O grep seria útil?

    
por Gestalt 04.06.2016 / 01:02

2 respostas

2

Sim, você pode fazer isso com grep :

printf %s\n {a..z} | grep -vf infile

ou com sort / join e um shell moderno:

sort -u infile | join -v2 - <(printf %s\n {a..z})

ou, da mesma forma, com awk :

awk 'NR==FNR{z[$0]++;next}!($0 in z)' infile <(printf %s\n {a..z})
    
por 04.06.2016 / 01:42
2

... ou com comm :

printf %s\n {a..z} | comm -23 - <(sort infile)

Aqui estamos suprimindo a saída do comm, exceto as linhas exclusivas do "arquivo 1". O arquivo 1 é o alfabeto printf ; O arquivo 2 é a entrada classificada (necessária para ser). Qualquer carta que esteja faltando no 'infile' do Arquivo 2 será informada por comm.

    
por 04.06.2016 / 03:49